在ibatis中不需要关注这些参数 而转到mybatis后 如果字段值为空 必须设置jdbctype
如
insert into testtable
(id,
name,
description,
imageurl,
linkurl,
isalways,
isdisplayindex,
displayweight,
starttime,
endtime,
creator,
creattime,
modifytime)
values
(seq_activity_table.nextval,
#{name},
#{desc,jdbctype=varchar},
#{imageurl,jdbctype=varchar},
#{linkurl,jdbctype=varchar},
#{isalways,jdbctype=char},
#{isdisplayindex,jdbctype=char},
#{displayweight,jdbctype=varchar},
#{starttime,jdbctype=date},
#{endtime,jdbctype=date},
#{creator,jdbctype=varchar},
sysdate,
sysdate
)
这些设置之多,太烦了,最让人烦的是 jdbctype = date,类型还必须大写,不能小写。
如下面的例子,将date 改成 date 。结果让人很抓狂啊!!!
insert into testtable
(id,
name,
description,
imageurl,
linkurl,
isalways,
isdisplayindex,
displayweight,
starttime,
endtime,
creator,
creattime,
modifytime)
values
(seq_activity_table.nextval,
#{name},
#{desc,jdbctype=varchar},
#{imageurl,jdbctype=varchar},
#{linkurl,jdbctype=varchar},
#{isalways,jdbctype=char},
#{isdisplayindex,jdbctype=char},
#{displayweight,jdbctype=varchar},
#{starttime,jdbctype=date},
#{endtime,jdbctype=date},
#{creator,jdbctype=varchar},
sysdate,
sysdate
)
org.mybatis.spring.mybatissystemexception: nested exception is org.apache.ibatis.builder.builderexception: error resolving jdbctype. cause: java.lang.illegalargumentexception: no enum const class org.apache.ibatis.type.jdbctype.date
org.mybatis.spring.mybatisexceptiontranslator.translateexceptionifpossible(mybatisexceptiontranslator.java:75)
org.mybatis.spring.sqlsessiontemplate$sqlsessioninterceptor.invoke(sqlsessiontemplate.java:368)
更坑爹的在后面,上面insert时的时候用#{endtime,jdbctype=date},可以将时间插入成功,且可以精确到时分秒
但如果在update语句中也这样使用,那你得到的只会有日期,这够坑爹的了吧 ,尼玛 比起ibatis方便之处差远了
要想在update语句中 将时间格式化成时分秒 不得不再加一个类型 如下面:
starttime = #{starttime,javatype=date, jdbctype=varchar}