这几天刚接触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 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 {……}

三、example使用前的准备

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

long countByExample(CompetingStoreExample example);
List<CompetingStore> selectByExample(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());}List<User> userList=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);List<User> userList=userMapper.selectByExample(example);

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

六、模糊查询

      if(!StringUtils.isNotBlank(user.getName())){criteria.andNameLIke(‘%’+name+’%’);}List<User>  userList=userMapper.selectByExample(example);

类似于:select * from user where name like %{#user.name}%

七、分页查询

        int start = (currentPage - 1) * rows;//分页查询中的一页数量example.setPageSize(rows);   //开始查询的位置example.setStartRow(start);List<User> userList=userMapper.selectByExample(example);

类似于:select * from user limit start to rows

文章若有不当之处,欢迎评论指出~
如果喜欢我的文章,欢迎关注知乎专栏Java修仙道路~

mybatis中关于example类详解相关推荐

  1. mybatis中关于example类详解mybatis的Example[Criteria]的使用

    一.什么是example类 mybatis-generator会为每个字段产生如上的Criterion,如果表的字段比较多,产生的Example类会十分庞大.理论上通过example类可以构造你想到的 ...

  2. Java中的Runtime类详解

    Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...

  3. java configuration类_JAVA中的Configuration类详解

    本文主要研究的是java中的configuration类的用法,涉及maven自动加载,pom.xml配置和简单的java代码,具体如下. properties文件是java平台默认的配置文件格式,其 ...

  4. stringtokenizer java_基于Java中的StringTokenizer类详解(推荐)

    StringTokenizer是字符串分隔解析类型,属于:Java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析 ...

  5. mbg中的Example类详解

    Mybatis逆向工程中生成的Example类 MyBatis Generator:简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及be ...

  6. java中的example_mybatis中关于example类详解

    这几天刚接触example,很多内容都是破碎的,写一篇文章加深理解. 一.什么是example类 mybatis-generator会为每个字段产生Criterion,为底层的mapper.xml创建 ...

  7. js中的Class类详解

    目录 什么是类? 定义一个简单的类 定义一个类为Person,每个Person都会跑,都有名字 看一下Person类 和 Person的实例 但是为什么Person实例多出来的两个属性? new 一个 ...

  8. Mybatis中Mapper映射文件详解(默认值)

    Mapper映射文件是一个xml格式文件,必须遵循相应的dtd文件规范,如ibatis-3-mapper.dtd.我们先大体上看看支持哪些配置?如下所示,从Eclipse里截了个屏: 从上图可以看出, ...

  9. Php-SPL库中的迭代器类详解(转)

    SPL提供了多个迭代器类,分别提供了迭代访问.过滤数据.缓存结果.控制分页等功能.,因为php总是在不断壮大,我尽可能列出SPL中所有的迭代类.下面其中一些迭代器类是需要php5.4,另外一些如Sea ...

最新文章

  1. golang中数组和slice作为参数的区别
  2. php中的interface和implements及其他
  3. 打击诈骗,逻辑回归闪亮登场
  4. win10安装net3.5不成功出现 0x8024402c_在移动硬盘中安装win10和macos双系统
  5. VC中使用ADO的方法
  6. 【POJ - 3272】Cow Traffic(dp,建反向图,DAG拓扑图)
  7. 课程 | 《知识图谱》第二期重磅来袭!
  8. python导入pillow模块_Python:argparse模块和pillow-image
  9. QT Core | 信号槽03 - 自定义信号与槽
  10. 【Excel-2010】空值替换
  11. 从零开始学习搜索引擎(开篇)---Searcharoo.net
  12. Binder运行机制的流程图
  13. Charles使用备注[1]
  14. hdu和poj的基础dp30道
  15. 使用Bash Bunny从被锁定的系统抓取登陆凭据
  16. Atitit USRqc62204 证书管理器标准化规范
  17. Android手游辅助开发从入门到精通
  18. 微信支付商户平台app支付开通方法详解
  19. 未来IT人才市场最热门的12项技能
  20. 重读《从菜鸟到测试架构师》-- 构建的过程

热门文章

  1. RZ7889 是一款DC 双向马达驱动电路IC
  2. 100种思维模型之认知资源思维模型-030
  3. 使用StretchBlt之前一定要用SetStretchBltMode(COLORONCOLOR)
  4. 钢琴学习:B站:艺起钢琴:《即兴伴奏怎么加花?学钢琴必不可少的一步》
  5. 如何在 Windows上使用桌面车机(DHU)测试 Android Auto
  6. 为什么会有矩阵这东西,矩阵到底有什么用
  7. T225362 《山茶文具店》
  8. 2021年江苏制造业百强企业排行榜:24家苏州企业营收比重达43.66%(附年榜TOP100详单)
  9. 汇编程序的格式和模板
  10. 【技巧】如何保护Word文档不被改动?