mybatis中写sql的问题记录

问题

1.注意sql语句结束不要;号

<select>
	select * from user where;// 错误写法
	select * from user where// ✔
</select>

2.mybatis.xml中大于号,小于号不能解析问题,使用<![CDATA[ < ]]>包住就可以使用了。

3.使用动态sql和<![CDATA[ ]]>结合注意不要把动态sql写在里面,那样无法解析

<if test="endDate!=null and endDate!=''">
  AND  o.deliverDate <![CDATA[ < ]]>  DATE_FORMAT( #{endDate}, '%Y-%m-%d %H:%i:%s' )
</if>
<if test="startDate != null and startDate != ''">
   AND o.deliverDate <![CDATA[ >= ]]> DATE_FORMAT( #{startDate}, '%Y-%m-%d %H:%i:%s')
</if>

以上代码还有一个问题,像日期这种一般是date的类型,如果按字符串判断,会报错

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

所以要注意类型,date就不用像字符串判断是不是空串了。

<if test="endDate!=null ">
   AND  o.deliverDate <![CDATA[ < ]]>  DATE_FORMAT( #{endDate}, '%Y-%m-%d %H:%i:%s' )
</if>
<if test="startDate != null ">
   AND o.deliverDate <![CDATA[ >= ]]> DATE_FORMAT( #{startDate}, '%Y-%m-%d %H:%i:%s')
</if>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值