Mybatis中针对数据库日期JdbcType设置
Mybatis中针对数据库日期JdbcType设置在学习Mysql的时候,我们知道数据库类型有date,datatime,time类型。在用Mybatis进行插入数据的时候,我们实体一般都是直接指定java.util.Date类型。为了确保数据类型插入的准确性,最好指定指定日期类型。1、设置JdbcType来指定插入类型Java中的数据类型和Mysql中如何映射的?Mybatis如下面这边展示,箭
Mybatis中针对数据库日期JdbcType设置
在学习Mysql的时候,我们知道数据库类型有date,datatime,time类型。在用Mybatis进行插入数据的时候,我们实体一般都是直接指定java.util.Date类型。为了确保数据类型插入的准确性,最好指定指定日期类型。
1、设置JdbcType来指定插入类型
Java中的数据类型和Mysql中如何映射的?Mybatis如下面这边展示,箭头表示对应关系。
-
(java)Date => (mysql)date
mysql实例:2021-12-13
-
Time => time
mysql实例:12:12
-
TimeSTAMP => datetime
mysql实例:2021-12-13 12:12
2、对照实验
对照实验请关注jdbcType的变化,默认存储的crate_time类型为datetime
2.1默认不指定jdbcType
<!--新增用户-->
<insert id="insert" parameterType="SysUser">
insert into sys_user(
id,
user_name,
user_password,
user_email,
user_info,
head_img,
create_time
)
values(
#{id},
#{userName},
#{userPassword},
#{userEmail},
#{userInfo},
#{headImg,jdbcType=BLOB},
#{createTime}
)
</insert>
DEBUG [main] - ==> Preparing: insert into sys_user( id, user_name, user_password, user_email, user_info, head_img, create_time ) values( ?, ?, ?, ?, ?, ?, ? )
DEBUG [main] - ==> Parameters: null, test1(String), 123456(String), test@mybatis.tk(String), test info(String), java.io.ByteArrayInputStream@52102734(ByteArrayInputStream), 2021-12-13 10:24:33.064(Timestamp)
DEBUG [main] - <== Updates: 1
2.2、指定为Date类型
#{createTime,javaType=DATE}
DEBUG [main] - ==> Preparing: insert into sys_user( id, user_name, user_password, user_email, user_info, head_img, create_time ) values( ?, ?, ?, ?, ?, ?, ? )
DEBUG [main] - ==> Parameters: null, test1(String), 123456(String), test@mybatis.tk(String), test info(String), java.io.ByteArrayInputStream@52102734(ByteArrayInputStream), 2021-12-13(Date)
DEBUG [main] - <== Updates: 1
2.3、指定为TIME类型
#{createTime,javaType=TIME}
DEBUG [main] - ==> Preparing: insert into sys_user( id, user_name, user_password, user_email, user_info, head_img, create_time ) values( ?, ?, ?, ?, ?, ?, ? )
DEBUG [main] - ==> Parameters: null, test1(String), 123456(String), test@mybatis.tk(String), test info(String), java.io.ByteArrayInputStream@52102734(ByteArrayInputStream), 10:31:46(Time)
DEBUG [main] - <== Updates: 1
2.4、指定为TIMESTAMP类型
#{createTime,jdbcType=TIMESTAMP}
DEBUG [main] - ==> Preparing: insert into sys_user( id, user_name, user_password, user_email, user_info, head_img, create_time ) values( ?, ?, ?, ?, ?, ?, ? )
DEBUG [main] - ==> Parameters: null, test1(String), 123456(String), test@mybatis.tk(String), test info(String), java.io.ByteArrayInputStream@3541cb24(ByteArrayInputStream), 2021-12-13 10:33:53.337(Timestamp)
DEBUG [main] - <== Updates: 1
3、总结
虽然说Mybatis有默认的类型处理器,可以自己去判断java的数据的数据类型,去智能化插入到数据库。但是为了防止类型错误,对于一些特殊的数据类型,建议还是指定具体的jdbcType值。
#{headImg,jdbcType=BLOB}
//mysql二级制流blob指定
#{createTime,jdbcType=TIMESTAMP}
//mysql时间戳datetime指定
更多推荐
所有评论(0)