iBatis中日期与字符串之间的映射

项目中用到了ibatis,具体情况如下:

select元素中配置了它的resultMap属性,这个resultMap对应的classOrderSearchResultModel,也就是说我的查询结果将用OrderSearchResultModel这个类的实例来进行封装。在我的ibatis的查询中有一个字段叫LEAVEDATE,它在数据库中是DATE型的,我的数据库库是OracleOrderSearchResultModel中与它对应的属性叫做arrivedate,那么如何对日期型进行映射呢?arrivedate定义成什么类型好呢?映射片段如下:

………………………………………………………………………………

<result property ="arrivedate" column="arrivedate"/>

………………………………………………………………………………

我尝试了四种情况:

1. arrivedate定义为String,直接查询LEAVEDATE字段

此时在ibatis在对结果进行封装时,相当于直接把LEAVEDATE的值转化成了字符串,就像在java中调用了toString方法一样。

2arrivedate定义为Date,直接查询LEAVEDATE字段

此时在对结果进行封装时得到的是一个DATE对象,注意此时将arrivedate输出时,它的日期格式是java里面的日期格式,而不是它存放在数据库里面的格式

3arrivedate定义为String,查询使用to_char(LEAVEDATE,’yyyymmdd’)

此时封装的时候就相当于从字符串映射到字符串,输出arrivedate的格式取决于我们在to_char中设置的格式

4Arrivedate定义为Date,查询使用to_char(LEAVEDATE,’yyyymmdd’)

这个时候系统会报错,大意就是说从字符串转化为DATE时错误,要求字符串是如下的格式:yyyy-mm-dd hh24:mi:ss。就如同我们在使用SimpleDateFormatparse方法时,要求所要解析的字符串符合特定的格式。

另外,我想,Ibatis在对数据进行封装的时候可能是把所查询的某个字段的结果作为参数传递给了它对应的属性的set方法。比方说arrivedate属性对应LEAVEDATE字段,那么它就会把LEAVEDATE的值作为作为参数传递给setArrivedate方法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值