mybatis中关于example类详解
这几天刚接触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类详解相关推荐
- mybatis中关于example类详解mybatis的Example[Criteria]的使用
一.什么是example类 mybatis-generator会为每个字段产生如上的Criterion,如果表的字段比较多,产生的Example类会十分庞大.理论上通过example类可以构造你想到的 ...
- Java中的Runtime类详解
Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...
- java configuration类_JAVA中的Configuration类详解
本文主要研究的是java中的configuration类的用法,涉及maven自动加载,pom.xml配置和简单的java代码,具体如下. properties文件是java平台默认的配置文件格式,其 ...
- stringtokenizer java_基于Java中的StringTokenizer类详解(推荐)
StringTokenizer是字符串分隔解析类型,属于:Java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析 ...
- mbg中的Example类详解
Mybatis逆向工程中生成的Example类 MyBatis Generator:简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及be ...
- java中的example_mybatis中关于example类详解
这几天刚接触example,很多内容都是破碎的,写一篇文章加深理解. 一.什么是example类 mybatis-generator会为每个字段产生Criterion,为底层的mapper.xml创建 ...
- js中的Class类详解
目录 什么是类? 定义一个简单的类 定义一个类为Person,每个Person都会跑,都有名字 看一下Person类 和 Person的实例 但是为什么Person实例多出来的两个属性? new 一个 ...
- Mybatis中Mapper映射文件详解(默认值)
Mapper映射文件是一个xml格式文件,必须遵循相应的dtd文件规范,如ibatis-3-mapper.dtd.我们先大体上看看支持哪些配置?如下所示,从Eclipse里截了个屏: 从上图可以看出, ...
- Php-SPL库中的迭代器类详解(转)
SPL提供了多个迭代器类,分别提供了迭代访问.过滤数据.缓存结果.控制分页等功能.,因为php总是在不断壮大,我尽可能列出SPL中所有的迭代类.下面其中一些迭代器类是需要php5.4,另外一些如Sea ...
最新文章
- golang中数组和slice作为参数的区别
- php中的interface和implements及其他
- 打击诈骗,逻辑回归闪亮登场
- win10安装net3.5不成功出现 0x8024402c_在移动硬盘中安装win10和macos双系统
- VC中使用ADO的方法
- 【POJ - 3272】Cow Traffic(dp,建反向图,DAG拓扑图)
- 课程 | 《知识图谱》第二期重磅来袭!
- python导入pillow模块_Python:argparse模块和pillow-image
- QT Core | 信号槽03 - 自定义信号与槽
- 【Excel-2010】空值替换
- 从零开始学习搜索引擎(开篇)---Searcharoo.net
- Binder运行机制的流程图
- Charles使用备注[1]
- hdu和poj的基础dp30道
- 使用Bash Bunny从被锁定的系统抓取登陆凭据
- Atitit USRqc62204 证书管理器标准化规范
- Android手游辅助开发从入门到精通
- 微信支付商户平台app支付开通方法详解
- 未来IT人才市场最热门的12项技能
- 重读《从菜鸟到测试架构师》-- 构建的过程
热门文章
- RZ7889 是一款DC 双向马达驱动电路IC
- 100种思维模型之认知资源思维模型-030
- 使用StretchBlt之前一定要用SetStretchBltMode(COLORONCOLOR)
- 钢琴学习:B站:艺起钢琴:《即兴伴奏怎么加花?学钢琴必不可少的一步》
- 如何在 Windows上使用桌面车机(DHU)测试 Android Auto
- 为什么会有矩阵这东西,矩阵到底有什么用
- T225362 《山茶文具店》
- 2021年江苏制造业百强企业排行榜:24家苏州企业营收比重达43.66%(附年榜TOP100详单)
- 汇编程序的格式和模板
- 【技巧】如何保护Word文档不被改动?