Mybatis Example的用法 IN语句查询
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语句查询相关推荐
- Mybatis中limit用法与分页查询
数据库使用的是mysql 要想在Mybatis中使用分页查询,首先要清楚mysql中limit的用法. limit a,b a是从第a+1条数据开始,b是指读取几条数据 例如:select * fro ...
- MyBatis like 语句查询
MyBatis like 语句查询 like CONCAT('%',#{keyWord},'%') 用CONCAT() 是最为推荐的. <select id="queryNewsByK ...
- Mybatis使用IN语句查询
https://blog.csdn.net/u011781521/article/details/79669180 Mybatis使用IN语句查询 lfendo 2018-03-23 16:45:03 ...
- [Java基础 持久层Mybatis] Mybatis使用IN语句查询
前言: #传入参数可以预防sql注入攻击,而$不行,这是缺点所在,非必须情况下,还请尽量使用#预编译的形式传入参数 一般都是先将String转成list或者数组,再用foreach去循环,类似这样(如 ...
- 后端技术:mybatis中resultMap用法示例笔记
1.概念 resultMap属于mybatis返回操作结果的一个标签,可以用来映射select查询出来结果的集合,主要作用是将实体类中的字段与数据库表中的字段进行关联映射.并且支持复杂的返回结果类型. ...
- MyBatis之五:动态sql语句
在mybatis 3 或以上的版本提供了4类标签,分别是:if,choose(when,otherwise),rim(where,set),foreach.接下来将分别介绍这几种标签的具体用法,映射x ...
- MyBatis中foreach用法
foreach用法 SQL语句中有时会使用in关键字,如id in {1,2,3},我们可以使用${ids}方式直接获取值,但是这种方法不能防止SQL注入,想避免SQL注入的话就需要使用#{id}的方 ...
- Mybatis入门:4(多表查询操作)
多表查询操作 Mybatis的多表操作 表之间的关系有几种:一对多.一对一.多对一.多对多 举例: 用户和订单就是一对多--一个用户可以下多个订单 订单和用户就是多对一--多个订单属于同一个用户 人和 ...
- java元婴期(25)----java进阶(mybatis(4)---高级映射查询缓存)
1.需要用到的数据模型(这是后面高级查询需要用到的实例) 用户表user: 记录了购买商品的用户信息 订单表:orders 记录了用户所创建的订单(购买商品的订单) ...
最新文章
- 中小企业低成本快速建站的秘诀——模板建站
- java线程的状态及状态间的切换
- mysql中enum类型
- 桌面虚拟化(八):扔掉你的电脑!电视就够了!
- Python数据类型和分支循环
- 辉光数码管中挥之不去的记忆
- CG CTF WEB 单身一百年也没用
- Hystrix使用与分析
- 【资讯】2017年最好的25大发明,你最钟爱哪个?
- 一个简单的用户注册JavaBean
- [转载] python对列表单词排序_计算列表中单词的频率并按频率排序
- SetStretchBltMode() 防止图片失真
- ASCII码,HTML转义字符表,以及快捷键
- 如何使用Teamtoken工具软件做员工股权激励
- GIS等级考试知识集锦
- 分享一个自己做的记账的小程序 - 智能记账,欢迎朋友们体验
- 百度地图迁徙大数据_百度地图发布春运大数据,2020年返程规模下降六成
- b365老掉线 h3c路由器_H3C路由器PPP连接的常见故障及解决方法
- qlikview从mysql中抽取数据的过程,mysql数据同步到sqlserver的过程
- es监控工具cerebro 安装使用教程
热门文章
- IDEA如何导入gradle项目
- DB2 Catalog浅析学习笔记
- HTTP状态码206
- flowable流程详解
- 在内网环境使用pip离线安装python包
- c# cad 二次开发 类库 对话框 将frame界面添加到类库中
- mysql (errcode 2)_“File '/usr/share/mysql/charsets/?.conf' not found (Errcode: 2)”,出错急救!...
- 工程项目中:replace的慎用
- 《脱颖而出——成功网店经营之道》一2.4 可持续化发展
- 如何处理plot使用时出现的中文框框问题