tk.mybatis.mapper.entity.Example 使用 in 语句查询

参数:property:字段名,对应 po 的属性,values: 迭代器接口 Iterable

集合顶层接口 Collection 会继承 迭代器接口 Iterable,因此第二个参数我们只需要传入 一个集合的实现类即可。

//分页查询1@RequestMapping(value="bootgridpage",produces="application/json;charset=UTF-8")@ResponseBodypublic BootgridPageInfoSet fenye(int current,int rowCount,String sort,String nane,String ph ){          PageHelper.startPage(current,rowCount);//分页Example example = new Example(CcompareccicModel.class); String by=Jsonutil.getsortby(sort);//解析字段example.setOrderByClause(by);   //排序那个字段Example.Criteria criteria = example.createCriteria();if (StringUtil.isNotEmpty(nane)) {criteria.andLike("xm", "%" + nane + "%");}if (StringUtil.isNotEmpty(ph)) {criteria.andLike("rybh", "%" + ph + "%");}// criteria.andEqualTo("xm", "崔颖");//条件相等// criteria.andGreaterThan("xb", "1");//大于// criteria.andLessThan("xb", "2");//小于// criteria.andIsNotNull("xm");//is not null// criteria.andCondition("xzdqh=","110104");//加各种条件都可以 = like <,可以代替全部的// List<String> values=new ArrayList<String>();// values.add("110104");// values.add("440304");// criteria.andIn("xzdqh", values);//in()// criteria.andBetween("csrq", "1956/01/08", "1966/10/21");//时间相隔// Example.Criteria criteria2 = example.createCriteria();// criteria2.andCondition("xzdqh=","220104");// example.or().andCondition("xzdqh=","220104");//or// example.or(criteria2);//orList<CcompareccicModel> list=service.selectByExample(example);  new BootgridPageInfoSet<CcompareccicModel>(list);return new BootgridPageInfoSet<CcompareccicModel>(list);}

参考博客:https://www.cnblogs.com/tian-ci/p/10543089.html

mapper文件的 xml 中 使用 in 语句查询

MyBatis中提供了foreach语句实现IN查询

foreach语句中, collection属性的参数类型可以使:List、数组、map集合
​     collection: 必须跟mapper.java中@Param标签指定的元素名一样
​     item: 表示在迭代过程中每一个元素的别名,可以随便起名,但是必须跟元素中的#{}里面的名称一样。
   index:表示在迭代过程中每次迭代到的位置(下标)
   open:前缀, sql语句中集合都必须用小括号()括起来
​     close:后缀
   separator:分隔符,表示迭代时每个元素之间以什么分隔

正确的写法有以下几种写法:

(一)、selectByIdSet(List idList)

如果参数的类型是List, 则在使用时,collection属性要必须指定为 list

List<User> selectByIdSet(List idList);<select id="selectByIdSet" resultMap="BaseResultMap">SELECT<include refid="Base_Column_List" />from t_userWHERE id IN<foreach collection="list" item="id" index="index" open="(" close=")" separator=",">#{id}</foreach>
</select>

(二)、List<User> selectByIdSet(String[] idList)

如果参数的类型是Array,则在使用时,collection属性要必须指定为 array

List<User> selectByIdSet(String[] idList);<select id="selectByIdSet" resultMap="BaseResultMap">SELECT<include refid="Base_Column_List" />from t_userWHERE id IN<foreach collection="array" item="id" index="index" open="(" close=")" separator=",">#{id}</foreach>
</select>
(三)、参数有多个时

当查询的参数有多个时,有两种方式可以实现,一种是使用@Param("xxx")进行参数绑定,另一种可以通过Map来传参数。

3.1 @Param("xxx")方式

List<User> selectByIdSet(@Param("name")String name, @Param("ids")String[] idList);<select id="selectByIdSet" resultMap="BaseResultMap">SELECT<include refid="Base_Column_List" />from t_userWHERE  name=#{name,jdbcType=VARCHAR} and id IN<foreach collection="ids" item="id" index="index" open="(" close=")" separator=",">#{id}</foreach>
</select>

3.2 Map方式

Map<String, Object> params = new HashMap<String, Object>(2);
params.put("name", name);
params.put("idList", ids);
mapper.selectByIdSet(params);<select id="selectByIdSet" resultMap="BaseResultMap">  select  <include refid="Base_Column_List" />  from t_user where name = #{name}and ID in  <foreach item="item" index="index" collection="idList" open="(" separator="," close=")">  #{item}  </foreach>
</select>

Mybatis Example的用法 IN语句查询相关推荐

  1. Mybatis中limit用法与分页查询

    数据库使用的是mysql 要想在Mybatis中使用分页查询,首先要清楚mysql中limit的用法. limit a,b a是从第a+1条数据开始,b是指读取几条数据 例如:select * fro ...

  2. MyBatis like 语句查询

    MyBatis like 语句查询 like CONCAT('%',#{keyWord},'%') 用CONCAT() 是最为推荐的. <select id="queryNewsByK ...

  3. Mybatis使用IN语句查询

    https://blog.csdn.net/u011781521/article/details/79669180 Mybatis使用IN语句查询 lfendo 2018-03-23 16:45:03 ...

  4. [Java基础 持久层Mybatis] Mybatis使用IN语句查询

    前言: #传入参数可以预防sql注入攻击,而$不行,这是缺点所在,非必须情况下,还请尽量使用#预编译的形式传入参数 一般都是先将String转成list或者数组,再用foreach去循环,类似这样(如 ...

  5. 后端技术:mybatis中resultMap用法示例笔记

    1.概念 resultMap属于mybatis返回操作结果的一个标签,可以用来映射select查询出来结果的集合,主要作用是将实体类中的字段与数据库表中的字段进行关联映射.并且支持复杂的返回结果类型. ...

  6. MyBatis之五:动态sql语句

    在mybatis 3 或以上的版本提供了4类标签,分别是:if,choose(when,otherwise),rim(where,set),foreach.接下来将分别介绍这几种标签的具体用法,映射x ...

  7. MyBatis中foreach用法

    foreach用法 SQL语句中有时会使用in关键字,如id in {1,2,3},我们可以使用${ids}方式直接获取值,但是这种方法不能防止SQL注入,想避免SQL注入的话就需要使用#{id}的方 ...

  8. Mybatis入门:4(多表查询操作)

    多表查询操作 Mybatis的多表操作 表之间的关系有几种:一对多.一对一.多对一.多对多 举例: 用户和订单就是一对多--一个用户可以下多个订单 订单和用户就是多对一--多个订单属于同一个用户 人和 ...

  9. java元婴期(25)----java进阶(mybatis(4)---高级映射查询缓存)

    1.需要用到的数据模型(这是后面高级查询需要用到的实例) 用户表user:          记录了购买商品的用户信息 订单表:orders          记录了用户所创建的订单(购买商品的订单) ...

最新文章

  1. 中小企业低成本快速建站的秘诀——模板建站
  2. java线程的状态及状态间的切换
  3. mysql中enum类型
  4. 桌面虚拟化(八):扔掉你的电脑!电视就够了!
  5. Python数据类型和分支循环
  6. 辉光数码管中挥之不去的记忆
  7. CG CTF WEB 单身一百年也没用
  8. Hystrix使用与分析
  9. 【资讯】2017年最好的25大发明,你最钟爱哪个?
  10. 一个简单的用户注册JavaBean
  11. [转载] python对列表单词排序_计算列表中单词的频率并按频率排序
  12. SetStretchBltMode() 防止图片失真
  13. ASCII码,HTML转义字符表,以及快捷键
  14. 如何使用Teamtoken工具软件做员工股权激励
  15. GIS等级考试知识集锦
  16. 分享一个自己做的记账的小程序 - 智能记账,欢迎朋友们体验
  17. 百度地图迁徙大数据_百度地图发布春运大数据,2020年返程规模下降六成
  18. b365老掉线 h3c路由器_H3C路由器PPP连接的常见故障及解决方法
  19. qlikview从mysql中抽取数据的过程,mysql数据同步到sqlserver的过程
  20. es监控工具cerebro 安装使用教程

热门文章

  1. IDEA如何导入gradle项目
  2. DB2 Catalog浅析学习笔记
  3. HTTP状态码206
  4. flowable流程详解
  5. 在内网环境使用pip离线安装python包
  6. c# cad 二次开发 类库 对话框 将frame界面添加到类库中
  7. mysql (errcode 2)_“File '/usr/share/mysql/charsets/?.conf' not found (Errcode: 2)”,出错急救!...
  8. 工程项目中:replace的慎用
  9. 《脱颖而出——成功网店经营之道》一2.4 可持续化发展
  10. 如何处理plot使用时出现的中文框框问题