Mybatis 中 的自动生成Example类详解

概述

Mybatis中使用generator生成代码时。会有一个Example类。今天简单记录一下这个类的作用以及用法。

参考

看到了一篇知乎上的文章。网址放这,可以看下
https://zhuanlan.zhihu.com/p/42411540

一、 Example 类的作用是什么

mybatis-generator会为每个字段产生Criterion,为底层的mapper.xml创建动态sql。如果表的字段比较多,产生的example类会十分庞大。理论上通过example类可以构造你想到的任何筛选条件。

二、example成员变量

	//作用:升序还是降序
	 //参数格式:字段+空格+asc(desc)
	 protected String orderByClause;  
	 //作用:去除重复
	 //true是选择不重复记录,false,反之
	 protected boolean distinct;
	 //自定义查询条件
	 //Criteria的集合,集合中对象是由or连接
	 protected List 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是根据user表生成的,UserMapper属于dao层,UserMapper.xml是对应的映射文件

// UserMapper接口:
long countByExample(CompetingStoreExample example);
List 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 userList=userMapper.selectByExample(example);

// 类似于:select * from user where name={#user.name} and sex={#user.sex} order by age asc;
// 模糊查询
if(!StringUtils.isNotBlank(user.getName())){

 	criteria.andNameLIke(‘%’+name+’%’);
 	
 }
 List userList=userMapper.selectByExample(example);
 // 类似于:select * from user where name like %{#user.name}%
分页查询
 int start = (currentPage - 1) * rows;
 //分页查询中的一页数量
 example.setPageSize(rows); 
 //开始查询的位置
 example.setStartRow(start);  
 List userList=userMapper.selectByExample(example);
 // 分页我觉的使用pagehelp插件就好啦

放一张表格把 来自: https://blog.csdn.net/biandous/article/details/65630783

你可能感兴趣的:(Java,Mybatis)