mybatis test标签如何判断值是否相等
mybatis可以很方便生成动态sql,
常用的方式如下:<if test='id != null and id !=’’'> and id != #{id} </if>
但是在实际使用过程中可能会需要对某个输入的值做具体判断,然后根据输入参数的值进行分支处理
<select parameterType='map' resultMap='BaseResultMap'> 。。。。。。。 <choose> <when test='hasAttach.toString() == ’1’.toString()'> having attachCount >= #{hasAttach} </when> <otherwise> having attachCount = #{hasAttach} </otherwise> </choose>
鉴于这个mapper查询接口传入的参数为Map<String,Object>类型,如果不进行toString的转换的话默认是对进行进行的对比,因此就无法达到预期的比较字符串的效果。
mybatis if test标签、动态sql问题之前用#{0}和#{1}虽然值能传到后台但一直不能正确校验,怎么改都无法校验成功。
错误代码:这是因为:dao层(或mapper层)中没有用@Param(“”)正确传值。
修改后:mybatis中也把0,1改成@Paran定义的值就可以了:
体验:细节很重要,不可忽略。
做毕设,为这个问题纠结两天,网上没有人提到这一点,耽误很久,以上为个人经验,希望能给大家一个参考,也希望大家多多支持好吧啦网。
相关文章:
1. Delphi中的Access技巧集2. MySQL入门教程7 —— 常用数据库查询的示例3. 启动MYSQL出错 Manager of pid-file quit without updating file.4. Access数据库安全的几个问题5. Mysql故障排除:Starting MySQL. ERROR! Manager of pid-file quit without updating file6. oracle触发器介绍7. MySQL中 concat函数的使用8. mysql数据库中最常用的时间转换函数的用法9. Microsoft Office Access添加网格线的方法10. 数据库Oracle9i的企业管理器简介
