码迷,mamicode.com
首页 > 数据库 > 详细

Mybatis中sql语句中的in查询,一定要判断null的情况

时间:2014-12-03 02:00:41      阅读:416      评论:0      收藏:0      [点我收藏+]

标签:sql语句   mysql   null   where   java   

不严谨的写法,可能会报错:in (),这种情况不符合mysql的语法。

    select from loanwhere LOAN_ID in 

<foreach item="item" index="id" collection="list" open="(" separator="," close=")">  

     #{item}  


要么在Mybatis的sql文件中,要么在Java程序中。

 

sql中的写法

<select id="findByLoanIds" parameterType="List">

select *

from p2p_loan_variation where 1= 1

<if test="list != null and list.size>0">

and LOAN_ID in

<foreach item="item" index="id" collection="list" open="("

separator="," close=")">

#{item}

</foreach>

</if>

<if test="list==null or list.size==0">and 1=0</if>

</select>

Java中的写法:

  List<LoanVariation> list = null;

     if(ListUtils.isNotEmpty(loadIds){

      list =loanVariationDao.findByLoanIds(loanIds);

   }

  return list;

如果有多个Java方法调用dao mapper,在sql中写比较省事,毕竟只需要一次“参数检查”。

上面的写法是针对一个查询条件的,如果有多个查询条件,记得处理条件之间的关系,

比如 a=1 and b =2 or c=3.

如果有in条件,最好加上括号,(a=1) and (b =2 ) or ( c in ...)


Mybatis中sql语句中的in查询,一定要判断null的情况

标签:sql语句   mysql   null   where   java   

原文地址:http://jlins.blog.51cto.com/4487484/1585669

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!