一、mapper接口中的方法解析
mapper接口中的部分常用方法及功能如下:

方法 功能说明
int countByExample(UserExample example) thorws SQLException 按条件计数
int deleteByPrimaryKey(Integer id) thorws SQLException 按主键删除
int deleteByExample(UserExample example) thorws SQLException 按条件删除
String/Integer insert(User record) thorws SQLException 插入数据(返回值为ID)
User selectByPrimaryKey(Integer id) thorws SQLException 按主键查询
ListselectByExample(UserExample example) thorws SQLException 按条件查询
ListselectByExampleWithBLOGs(UserExample example) thorws SQLException 按条件查询(包括BLOB字段)。只有当数据表中的字段类型有为二进制的才会产生
int updateByPrimaryKey(User record) thorws SQLException 按主键更新
int updateByPrimaryKeySelective(User record) thorws SQLException 按主键更新值不为null的字段
int updateByExample(User record, UserExample example) thorws SQLException 按条件更新
int updateByExampleSelective(User record, UserExample example) thorws SQLException 按条件更新值不为null的字段

二、Example类解析
mybatis的逆向工程中会生成实体类及实体类对应的example类,example类用于添加条件,相当where后面的部分。
xxxExample example = new xxxExample(); 
Criteria criteria = new Example().createCriteria();
example类中的部分常用方法及功能如下:

方法 功能说明
example.setOrderByClause(“字段名 ASC”); 添加升序排列条件,DESC为降序
example.setDistinct(false) 去除重复,boolean型,true为选择不重复的记录
criteria.andXxxIsNull 添加字段xxx为null的条件
criteria.andXxxIsNotNull 添加字段xxx不为null的条件
criteria.andXxxEqualTo(value) 添加xxx字段等于value条件
criteria.andXxxNotEqualTo(value) 添加xxx字段不等于value条件
criteria.andXxxGreaterThan(value) 添加xxx字段大于value条件
criteria.andXxxGreaterThanOrEqualTo(value) 添加xxx字段大于等于value条件
criteria.andXxxLessThan(value) 添加xxx字段小于value条件
criteria.andXxxLessThanOrEqualTo(value) 添加xxx字段小于等于value条件
criteria.andXxxIn(List<?>) 添加xxx字段值在List<?>条件
criteria.andXxxNotIn(List<?>) 添加xxx字段值不在List<?>条件
criteria.andXxxLike(“%”+value+”%”) 添加xxx字段值为value的模糊查询条件
criteria.andXxxNotLike(“%”+value+”%”) 添加xxx字段值不为value的模糊查询条件
criteria.andXxxBetween(value1,value2) 添加xxx字段值在value1和value2之间条件
criteria.andXxxNotBetween(value1,value2) 添加xxx字段值不在value1和value2之间条件

注:在mybatis逆向工程生成的文件XxxExample.java中包含一个static的内部类Criteria,Criteria中的方法是定义SQL 语句where后的查询条件。
三、总结
XxxExample.java只能实现简单条件增删改查,复杂的功能还需要自己编写sql代码来实现。

参考:https://www.cnblogs.com/wxywxy/p/10697173.html

一、example类干什么用的?

理论上通过example类可以构造你想到的任何筛选条件。

例子是展示此类用法的最好方式.

Example类可以用来生成一个几乎无限的where子句.

可以让你不用再mybatis里写一大堆mapper.xml文件

注:在使用example类前 先学下MBG配置(Mybatis-Generator) http://www.mybatis.org/generator/

我使用的是Maven项目,所以导入Mapper的Maven依赖

<dependency>  <groupId>tk.mybatis</groupId>  <artifactId>mapper</artifactId>  <version>3.2.0</version>
</dependency>  

二、了解example成员变量

     //升序还是降序//参数格式:字段+空格+asc(desc)protected String orderByClause;//去除重复//true是选择不重复记录protected boolean distinct;//自定义查询条件//Criteria的集合,集合中对象是由or连接protected List<Criteria> oredCriteria;//内部类Criteria包含一个Cretiron的集合,//每一个Criteria对象内包含的Cretiron之间//是由AND连接的public static class Criteria extends GeneratedCriteria {protected Criteria() {super(); }}//是mybatis中逆向工程中的代码模型protected abstract static class GeneratedCriteria{…..}//是最基本,最底层的Where条件,用于字段级的筛选public static class Criterion {……}

(greater than) - 指相关的列必须大于方法参数中的值 
= (greater than or equal) - 指相关的列必须大于等于方法参数中的值 
< (less than) - 指相关的列必须小于于方法参数中的值 
<= (less than or equal) - 指相关的列必须小于等于方法参数中的值 
LIKE - 指相关的列必须 “like” 方法参数中的值. 这个方法不用必须加入 ‘%’, 您必须设置方法参数中的值. 
NOT LIKE - 指相关的列必须 “not like” 方法参数中的值. 这个方法不用必须加入 ‘%’, 您必须设置方法参数中的值. 
BETWEEN - 指相关的列必须在 “between” 方法参数中的两个值之间. 
NOT BETWEEN - 指相关的列必须不在 “not between” 方法参数中的两个值之间. 
IN - 指相关的列必须在传入的方法参数的list中. 
NOT IN - 指相关的列必须不在传入的方法参数的list中.

Example example = new Example(user.class);for(int i=0;i < 10;i++) {example.createCriteria().andEqualTo("roleCode",bean.getRoleCode).andNotIn("status",Arrays.asList("0","1"))  //注意用的是类中的属性,不是数据库中的属性.andCondition("(FLAG <> '0' OR FLAG IS NULL)").andCondition("(role_nodecode is null or role_nodecode         ='"+fean.getNextRoleNodeCode+"')");example.selectProperties("serialNo", "roleCode", "employeeCode", "roleNodeCode");   example.setDistinct(true); // 去除重复,boolean型,true为选择不重复的记录。example.orderBy("serialNo"); // 对应实体类中属性名example.setOrderByClause("SERIAL_NO desc"); // 对应表结构字段名称// 排序另外写法example.orderBy("serialNo").asc().orderBy("employeeCode").asc();List<AfwFlowDtl> afwFlowDtlList = afwFlowDtlMapper.selectList(example);example.clear();// 把条件清空,可以循环使用,嵌套在for循环里面使用}

注:

这里面有一个坑,就是.andCondition("(role_nodecode is null or role_nodecode ='"+fean.getNextRoleNodeCode+"')");

若是和面的参数role_nodecode是字符串类型,对应的value值 要加' '

java:mybatis:工具类example详解相关推荐

  1. Java并发工具类--CyclicBarrier详解

    CyclicBarrier允许一组线程在到达某个栅栏点(common barrier point)互相等待,直到最后一个线程到达栅栏点,栅栏才会打开,处于阻塞状态的线程恢复继续执行. 举例 举个例子来 ...

  2. JAVA高效率 (秒级) 将千万条数据导入数据库 (已封装工具类)【详解】【一看就懂】

    该gif做了加速处理,便于观看~  今天在将一个500w+条数据的文件导入至数据库时,遇到一个异常,相信做大数据应该都有遇到.500w条数据说多不多,说少也不少.既然问题出现了,那么就一定要解决. 异 ...

  3. (五)Java工具类ArrayUtils详解

    说明:ArrayUtils工具类在标准的应用程序中是不可以被实例化的:  参考:[参考地址](http://commons.apache.org/proper/commons-lang/javadoc ...

  4. java 加减乘除 工具类_Java数学工具类MathUtil详解

    package cn.xbz.util.math; import java.math.BigDecimal; /** * @title 数学计算工具类 * @description 提供常用的数值加减 ...

  5. java 日期处理工具类_Java日期处理工具类DateUtils详解

    本文实例为大家分享了Java日期处理工具类DateUtils的具体代码,供大家参考,具体内容如下 import java.sql.Timestamp; import java.text.ParseEx ...

  6. java json 工具类_Java中JSON处理工具类使用详解

    本文实例为大家分享了JSON处理工具类的具体代码,供大家参考,具体内容如下 import java.io.IOException; import java.util.Date; import java ...

  7. Java数据结构及工具类的详解

    `1 数据结构 常见的数据结构 : 栈堆 , 队列, 数组, 链表和红黑树 栈 栈 : 它是运算受限的线性表, 其限制是仅允许在标的一端进行插入和删除操作, 不允许在其他任何位置进行添加, 查找, 删 ...

  8. Java中String类intern()详解

    1.背景 在开发过程中很多朋友,由于不会正确使用intern(),导致开发的程序,执行效率比较差.同时最近发现一道非常有意思的关于intern()的面试题,这道面试题还是有不小的难度,相信很多朋友看到 ...

  9. android 快速开发常用工具类,实例详解Android快速开发工具类总结

    一.日志工具类 Log.java public class L { private L() { /* 不可被实例化 */ throw new UnsupportedOperationException ...

  10. Hibernate_1_配置文件详解_基础案例_Hibernate工具类_API详解_持久化类编写规则

    Hibernate( ORM框架 ) Hibernate是一个数据持久化层的ORM框架. 它通过JavaBean, 数据库中的表与自身的映射关系达到表中数据的增删改查 特性 1.对JDBC访问数据库的 ...

最新文章

  1. 在linux CentOS 上安装chrome 谷歌浏览器
  2. mybaits二:通过接口类,查询数据
  3. SAP Netweaver的负载均衡消息服务器 vs CloudFoundry的App Router
  4. Linux下社交平台,Linux 启动
  5. 十分钟让你明白AIDL
  6. tomcat启动成功 未加载项目_喜讯!济宁医学院附属医院SPD项目成功启动
  7. OpenCV3与深度学习实例-使用OpenPose进行人体姿态估算
  8. java转码gbk_Java实现GBK转码到UTF-8(文件)
  9. 1. 初识 Lucene
  10. HTMl中3d变换卡片制作方法,CSS如何实现卡片3D翻转效果
  11. php实现先序、中序、后序遍历二叉树
  12. 通用即插即用监视器驱动下载_驱动之家和驱动精灵哪个好
  13. 几款流行的开源后台管理框架
  14. rom大小 stm32f205_最小的基于STM32F205VE的系统板
  15. Spring教程动画文字版
  16. QQ群红包裂变吸粉引流 玩法解析实战操作
  17. 在线抢购平台_项目预览
  18. Instagram帖子类型及标题撰写技巧
  19. 微信小程序云调用security.mediaCheckAsync接口成功实例(内容安全审核接口)
  20. ikbc 104键win键失效

热门文章

  1. OpenCV-python利用蒙版进行叠加(含alpha通道)
  2. springboot 上传图片存储在后台,并指定存储路径
  3. 综合评价方法(一)------基础知识
  4. 备份工具mysqldump介绍
  5. Python破解滑动验证码(极验/无背景图)
  6. 风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计
  7. 如何破解Charles4.0.1------超级简单
  8. my_RIO实现小车避障
  9. 免费小说分享—《异界之九阳真经》
  10. KindEditor插件(富文本编辑器)的使用