hibernate用了一段时间,可能是没有深入到技术细节,总觉得工作效率上不高,而且sql语句的编写不灵活,不能充分的利用sql语句的优势(很可能是在Hibernate上自己也就1/4桶水吧);所以看是关注ibatis来,说来惭愧,知道ibatis很久了,可因为项目用不到所以也懒得来看,最近才想起来。。。自己鄙视下自己先。。。。
最初看的当然是官网(http://ibatis.apache.org)的sqlMap 快速入门:
1.ibatis的配置
ibatis的配置初步分为两块:
a) sqlMap 框架的属性配置 - datasource等等.
b) sqlMap的映射文件配置 -估计这就是ORM 配置
2. 映射文件配置范例和讲解
<sqlMap namespace="Person">
<select id="getPerson" resultClass="examples.domain.Person">
SELECT PER_ID as id,
PER_FIRST_NAME as firstName,
PER_LAST_NAME as lastName,
PER_BIRTH_DATE as birthDate,
PER_WEIGHT_KG as weightInKilograms,
PER_HEIGHT_M as heightInMeters
FROM PERSON
WHERE PER_ID = #value#
</select>
</sqlMap>
上面就是例子是SQL Map最简单的形式。据匹配的名字将ResultSet的列映射成Java Bean的属性(或Map的key值)。
特别需要注意的是#value#符号是输入参数,该符号表示使用了基本类型的包装类作为输入参数(resultClass不带类型)。此外但有一些限制,无法指定输出字段的数据类型,无法自动地在结果对象中载入相关的信息(即Java Bean无法使用复杂的属性);
以上的方法对性能还有轻微的不利影响,因为需要读取ResultSetMetaData的信息。
使用resultMap,可以克服以上的不足,
3.parameterClass,parameterMap;resultClass,resultMap
parameterClass,resultClass 不带有字段的类型;
1)parameterMap, resultMap 中字段类型是java.sql.Types类定义的常量名称;
常用的数据类型包括BLOB,CHAR,CLOB,DATE,LONGVARBINARY, INTEGER,NULL,
NUMERIC,TIME,TIMESTAMP和VARCHAR等。
2) 对于数据表中NULLBALE的字段,必须在parameterMap和resultMap中指定字段的数据类型。
3) 对于数据类型是DATE,CLOB或BLOB的字段,最好在parameterMap和resultMap
中指定数据类型。
4) 对于二进制类型的数据,可以将LONGVARBINARY映射成byte[]。
5) 对于文本类型较大的数据,可以将CLOB映射成String。
6) Java Bean必须拥有缺省的构造器(即无参数的构造器)。
7) Java Bean最好实现Serializable接口,以备应用的进一步扩展。
2855

被折叠的 条评论
为什么被折叠?



