这几天刚接触example,很多内容都是破碎的,写一篇博文加深理解。

一、什么是example类

mybatis-generator会为每个字段产生如上的Criterion,如果表的字段比较多,产生的Example类会十分庞大。理论上通过example类可以构造你想到的任何筛选条件。在mybatis-generator中加以配置,配置数据表的生成操作就可以自动生成example了。具体配置可以参考MBG有关配置。

下面是mybatis自动生成example的使用。

二、了解example成员变量

//升序还是降序

//参数格式:字段+空格+asc(desc)

protected String orderByClause;

//去除重复

//true是选择不重复记录

protected boolean distinct;

//自定义查询条件

//Criteria的集合,集合中对象是由or连接

protected ListoredCriteria;

//内部类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 {……}

三、example使用前的准备

比如我的example是根据user表生成的,UserMapper属于dao层,UserMapper.xml是对应的映射文件

UserMapper接口:

long countByExample(CompetingStoreExample example);

ListselectByExample(CompetingStoreExample example);

在我们的测试类里:

UserExample example = new UserExample();

UserExample.Criteria criteria = example.createCriteria();

四、查询用户数量

long count = UserMapper.countByExample(example);

类似于:select count(*) from user

五、where条件查询或多条件查询

example.setOrderByClause("age asc");//升序

example.setDistinct(false);//不去重

if(!StringUtils.isNotBlank(user.getName())){

Criteria.andNameEqualTo(user.getName());

}

if(!StringUtils.isNotBlank(user.getSex())){

Criteria.andSexEqualTo(user.getSex());

}

ListuserList=userMapper.selectByExample(example);

类似于:select * from user where name={#user.name} and sex={#user.sex} order by age asc;

UserExample.Criteria criteria1 = example.createCriteria();

UserExample.Criteria criteria2 = example.createCriteria();

if(!StringUtils.isNotBlank(user.getName())){

Criteria1.andNameEqualTo(user.getName());

}

if(!StringUtils.isNotBlank(user.getSex())){

Criteria2.andSexEqualTo(user.getSex());

}

Example.or(criteria2);

ListuserList=userMapper.selectByExample(example);

类似于:select * from user where name={#user.name} or sex={#user.sex} ;

六、模糊查询

if(!StringUtils.isNotBlank(user.getName())){

criteria.andNameLIke(‘%'+name+'%');

}

ListuserList=userMapper.selectByExample(example);

类似于:

select * from user where name like %{#user.name}%

七、分页查询

int start = (currentPage - 1) * rows;

//分页查询中的一页数量

example.setPageSize(rows);

//开始查询的位置

example.setStartRow(start);

ListuserList=userMapper.selectByExample(example);

类似于:

select * from user limit start to rows

到此这篇关于Java中mybatis中关于example类的使用详解的文章就介绍到这了,更多相关Java mybatis中example类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

java example 去重_Java中mybatis关于example类的使用详解相关推荐

  1. java 组合对象_Java 中组合模型之对象结构模式的详解

    Java 中组合模型之对象结构模式的详解 一.意图 将对象组合成树形结构以表示"部分-整体"的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 二.适用性 ...

  2. java return返回值_java中关于return返回值的用法详解

    我们输入一个条件时,系统就会对这个条件进行判断,然后给出一个返回时的结论,我们把这个结果看做是返回值.在java里可以使用return语句来进行返回,从字面意思就能很好的理解它的用法了.下面我们就re ...

  3. java构造方法重载_Java 重载、重写、构造函数的实例详解

    Java 重载.重写.构造函数的实例详解 方法重写 1.重写只能出现在继承关系之中.当一个类继承它的父类方法时,都有机会重写该父类的方法.一个特例是父类的方法被标识为final.重写的主要优点是能够定 ...

  4. java游戏代码_Java与Kotlin系列文章之性能问题详解

    作者丨Jakub Anioła 译者丨姜雨生 策划丨田晓旭 随着对 Kotlin 越来越深入的了解,我发现市面上关于 Kotlin 方面,比较深入的资料几乎是 0,所以我决定,将 Kotlin 各个方 ...

  5. java内存 海子_Java虚拟机:JVM内存模型和volatile详解

    JVM内存模型和volatile详解 Java内存模型 随着计算机的CPU的飞速发展,CPU的运算能力已经远远超出了从主内存(运行内存)中读取的数据的能力,为了解决这个问题,CPU厂商设计出了CPU内 ...

  6. java plus方法_Java中MyBatis Plus知识点总结

    好程序员Java教程分享MyBatis Plus介绍: 1.MyBatis Plus 介绍 MyBatis Plus 是国内人员开发的 MyBatis 增强工具,在 MyBatis 的基础上只做增强不 ...

  7. java steam 去重_Java中对List去重, Stream去重

    问题 当下互联网技术成熟,越来越多的趋向去中心化.分布式.流计算,使得很多以前在数据库侧做的事情放到了Java端.今天有人问道,如果数据库字段没有索引,那么应该如何根据该字段去重?大家都一致认为用Ja ...

  8. java steam 去重_Java中对List去重 Stream去重的解决方法

    问题 当下互联网技术成熟,越来越多的趋向去中心化.分布式.流计算,使得很多以前在数据库侧做的事情放到了Java端.今天有人问道,如果数据库字段没有索引,那么应该如何根据该字段去重?大家都一致认为用Ja ...

  9. java 枚举_Java中的枚举类型(Enum)详解

    文章前记 程序员工作久了便可能整日忙碌于"增删改查"中,迷失方向,毫无进步. 该公众号致力于分享软件开发相关的原创干货,助你完成从程序员到架构师的进阶之路! 努力!做一个NB的Co ...

最新文章

  1. P1155 双栈排序(二分图的染色判断+链式前向星)
  2. 千万别中招!手把手教你复现Log4j2漏洞!
  3. 机器学习优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
  4. ajax 请求post和get,ajax请求get和post
  5. python输出用逗号隔开的数字_Python:从字符串中提取带有点和逗号的数字
  6. Maven 编译打包时如何忽略测试用例
  7. nginx服务器配置安全维护,nginx 安全:如何强化服务器配置
  8. 51CTO独家:2008下半年软考所有科目试题已到
  9. HTML:在动态背景登陆界面中加入图片轮播
  10. 639. 解码方法 2
  11. 3点画矩形的lisp_在CAD中,如何在这个矩形里面再画三个这样的矩形
  12. 计算机教育思维,计算机教育中计算思维的培育
  13. matlab教程 振动,Matlab振动程序-代码作业
  14. HTML+CSS静态页面网页设计作业——甜品奶茶店(19页) HTML5网页设计成品_学生DW静态网页设计_web课程设计网页制作
  15. android storagemanager来获取u盘名称,StorageManager获取U盘挂载状态
  16. MPA海洋捕食者算法学习笔记
  17. 推荐一个外国的数据结构在线演示网站
  18. Arduino Uno 实验14——声音传感器
  19. 树莓派-实时视频监控
  20. 冯小刚:对“伪民族化”的拨乱反正

热门文章

  1. 对接支付宝人脸识别和获取用户信息接口
  2. 【bzoj2563】阿狸和桃子的游戏 脑洞
  3. iOS NSString使用stringWithFormat的拼接
  4. 雨水泛洪和网络泛洪那个更可怕
  5. 手机版python编辑器下载_描写手的优美句子
  6. kali 破解WPA-PSK 弱密码
  7. 虚假“大数据”来自“刷阅族”
  8. 金融NLP需求落地实践总结——使用T5-Pegasus做一句话摘要
  9. python代码---银行卡冻结时间算法
  10. Putting Plates 摆盘