这几天刚接触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类的使用详解的文章就介绍到这了,更多相关Java mybatis中example类内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
本文向大家介绍Mybatis多线程下如何使用Example详解,包括了Mybatis多线程下如何使用Example详解的使用技巧和注意事项,需要的朋友参考一下 前言 服务器每收到一个请求,都会从线程池中调度一个空闲线程来处理,spring整合的web时,controller和service一般都是单例的,这样导致无论你的Example标注的是单例还是多例,同一个service下的Example也只
本文向大家介绍深入理解SpringBoot中关于Mybatis使用方法,包括了深入理解SpringBoot中关于Mybatis使用方法的使用技巧和注意事项,需要的朋友参考一下 这两天启动了一个新项目因为项目组成员一直都使用的是mybatis,虽然个人比较喜欢jpa这种极简的模式,但是为了项目保持统一性技术选型还是定了 mybatis。到网上找了一下关于spring boot和mybatis组合的相
本文向大家介绍详解Spring Boot中MyBatis的使用方法,包括了详解Spring Boot中MyBatis的使用方法的使用技巧和注意事项,需要的朋友参考一下 orm框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,一个是宣称可以不用写一句SQL的hibernate,一个是可以灵活调试动态sql的mybatis,两者各有特点,在企业级系统开发中可以根据需求灵活使用。发现一
本文向大家介绍mybatis自动生成时如何设置不生成Example类详解,包括了mybatis自动生成时如何设置不生成Example类详解的使用技巧和注意事项,需要的朋友参考一下 本文主要给大家介绍了关于mybatis自动生成时不生成Example类的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 只需要在配置要生成的table表中添加几个配置属性就行了。 在generatorConfi
本文向大家介绍详解Java中的final关键字的使用,包括了详解Java中的final关键字的使用的使用技巧和注意事项,需要的朋友参考一下 final含义 final是Java中的一个保留关键字,可以声明成员变量、方法和类。一旦你将引用声明为final类型,你将不能再改变这个引用了。编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。 final变量 凡是对成员变量或者本地变量(
本文向大家介绍Javascript中关于Array.filter()的妙用详解,包括了Javascript中关于Array.filter()的妙用详解的使用技巧和注意事项,需要的朋友参考一下 前言 和map类似,Array的filter也接收一个函数。但是和map不同的是, filter把传入的函数依次作用于每个元素,然后根据返回值是 true 还是false决定保留还是丢弃该元素。 实例介绍 例