ibatisbean-result数据类型映射

时间:2022-06-20 21:41:54

bean的属性类型----ibatis类型-------oracle数据库类型

(2012-10-30 11:55:19)

1、 ibatis中会通过resultMap把bean的类型与oralce的列对应起来,如下面的例子:

Xml代码 " wmode="transparent">
  1. <</SPAN>resultMap id="userMap"class="userBean" >
  2. <</SPAN>result column="ID"property="id" />
  3. <</SPAN>result column="CIP_NAME"property="name" />
  4. <</SPAN>result column="CIP_SEX"property="sex" />
  5. <</SPAN>result column="CIP_LANGUAGE"property="language" />
  6. <</SPAN>result column="CIP_studyLever"property="studyLever" />
  7. <</SPAN>result column="CIP_post"property="post" />
  8. <</SPAN>result column="CIP_DESC"property="desc" />
  9. <</SPAN>result column="CIP_BIRTHDAY"property="birthday" />
  10. </</SPAN>resultMap>

经过测试,以id列为例,不管在oracle表中,id列是varchar、number,在bean中id列可以定义为String、 Integer类型,这句话的意思是id列为varhcar类型时,可以将bean中的id定义为String、Integer类型,id列为 number类型时,也可以将bean中的id定义为String、Integer类型。


2、当bean中的属性定义从String改为Integer或者从Integer改为String时,需要改变的是以下的配置:

Xml代码 select CIP_Test_User_seq.nextval as id from dual insert into CIP_Test_User( ID, CIP_NAME, CIP_SEX, CIP_LANGUAGE, CIP_studyLever, CIP_post, CIP_DESC, CIP_BIRTHDAY ) values( #id#, #name#, #sex#, #language#, #studyLever#, #post#, #desc#, #birthday# ) " wmode="transparent">
  1. <</SPAN>insert id="insertUser"parameterClass="UserBean">
  2. <</SPAN>selectKeykeyProperty="id" resultClass="java.lang.String">
  3. select CIP_Test_User_seq.nextval as id from dual
  4. </</SPAN>selectKey>
  5. insert into
  6. CIP_Test_User(
  7. ID,
  8. CIP_NAME,
  9. CIP_SEX,
  10. CIP_LANGUAGE,
  11. CIP_studyLever,
  12. CIP_post,
  13. CIP_DESC,
  14. CIP_BIRTHDAY
  15. )
  16. values(
  17. #id#,
  18. #name#,
  19. #sex#,
  20. #language#,
  21. #studyLever#,
  22. #post#,
  23. #desc#,
  24. #birthday#
  25. )
  26. </</SPAN>insert>

如果bean中的类型是Integer,则需要把 resultClass="java.lang.Integer";
如果bean中的类型是String ,则需要把 resultClass="java.lang.String ";

3、日期的处理:bean中定义的类型是java.utils.Date
日期需要在插入的时候做一个转换,从String转为Date;在JSP中显示的时候,使用fmt作一个转换。
在ibatis中不需要特殊处理。
(1)库中insert数据,在action里进行处理:

Java代码
  1. SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd");
  2. Stringbirthday=(String) dynaBean.get("birthday");
  3. if(StringUtils.isNotBlank(birthday)){ //注意这里一定要判断为空,如果为空,转换的时候会出错。
  4. userBean.setBirthday(format.parse(birthday));
  5. }

(2)在JSP中显示日期时:

Java代码
  1. '${userBean.birthday}' pattern='yyyy-MM-dd'/>