网站开发的学校,太原手机模板建站,建设网站的HTML代码,永清县建设局网站https://blog.csdn.net/u011781521/article/details/79669180 Mybatis使用IN语句查询 lfendo 2018-03-23 16:45:03 201525 收藏 140
分类专栏#xff1a; MyBatis 文章标签#xff1a; mybatis JAVA sql
版权
一、简介 在SQL语法中如果我们想使用in的话直接可以像如下一…
https://blog.csdn.net/u011781521/article/details/79669180 Mybatis使用IN语句查询 lfendo 2018-03-23 16:45:03 201525 收藏 140
分类专栏 MyBatis 文章标签 mybatis JAVA sql
版权
一、简介 在SQL语法中如果我们想使用in的话直接可以像如下一样使用:
select * from HealthCoupon where useType in ( 4 , 3 )
但是如果在MyBatis中的使用in的话,像如下去做的话,肯定会报错: MapString, Object selectByUserId(Param(useType) String useType)select idselectByUserId resultMapBaseResultMap parameterTypejava.lang.Stringselect * from HealthCoupon where useType in (#{useType,jdbcTypeVARCHAR})/select 其中useType2,3;这样的写法,看似很简单,但是MyBatis不支持。。但是MyBatis中提供了foreach语句实现IN查询,foreach语法如下:
foreach语句中 collection属性的参数类型可以使List、数组、map集合
collection 必须跟mapper.java中Param标签指定的元素名一样
item 表示在迭代过程中每一个元素的别名可以随便起名但是必须跟元素中的#{}里面的名称一样。index表示在迭代过程中每次迭代到的位置(下标)open前缀 sql语句中集合都必须用小括号()括起来
close后缀separator分隔符表示迭代时每个元素之间以什么分隔 正确的写法有以下几种写法: (一)、selectByIdSet(List idList) 如果参数的类型是List, 则在使用时collection属性要必须指定为 list ListUser selectByIdSet(List idList);select idselectByIdSet resultMapBaseResultMapSELECTinclude refidBase_Column_List /from t_userWHERE id INforeach collectionlist itemid indexindex open( close) separator,#{id}/foreach
/select (二)、ListUser selectByIdSet(String[] idList) 如果参数的类型是Array,则在使用时collection属性要必须指定为 array
ListUser selectByIdSet(String[] idList);select idselectByIdSet resultMapBaseResultMapSELECTinclude refidBase_Column_List /from t_userWHERE id INforeach collectionarray itemid indexindex open( close) separator,#{id}/foreach
/select (三)、参数有多个时 当查询的参数有多个时,有两种方式可以实现一种是使用Param(xxx)进行参数绑定另一种可以通过Map来传参数。 3.1 Param(xxx)方式
ListUser selectByIdSet(Param(name)String name, Param(ids)String[] idList);select idselectByIdSet resultMapBaseResultMapSELECTinclude refidBase_Column_List /from t_userWHERE name#{name,jdbcTypeVARCHAR} and id INforeach collectionidList itemid indexindexopen( close) separator,#{id}/foreach
/select 3.2 Map方式
MapString, Object params new HashMapString, Object(2);
params.put(name, name);
params.put(idList, ids);
mapper.selectByIdSet(params);select idselectByIdSet resultMapBaseResultMap select include refidBase_Column_List / from t_user where name #{name}and ID in foreach itemitem indexindex collectionidList open( separator, close) #{item} /foreach
/select 点赞43评论