复习Mybatis时,在插入数据的过程当中使用动态SQL报错如下:
环境:腾讯云-mysql5.7
驱动:8.0.23
Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime value: '0' for column 'create_time' at row 1
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException
查了几个博客大致以下情况都有:
- 设置Mysql模式(原因是我们的数据库不支持datetime为0的情况,这是一个模式的设置)
- 驱动问题
- SQL语句拼接错误
其实大部分情况下都是sql语句出错,如果在插入时使用动态sql,在参照mybatis官方文档的基础上:
直接拿来用是不行的,查看配置文件发现(具体看注释):
<insert id="addBlog" parameterType="Blog">
insert into user.blog
<trim prefix="values(" suffix=")" suffixOverrides=",">
<if test="id!=null">
#{id}, //不需要id=#{id}
</if>
<if test="title!=null">
#{title},
</if>
<if test="author!=null">
#{author},
</if>
<if test="createTime!=null">
#{createTime},
</if>
<if test="views!=null">
#{views}
</if>
</trim>
</insert>
正常拼接结果:
可以直接将字段名略去,带上参数即可。