天天看点

Mybatis:Example类的使用--基本增删改查,模糊查询,排序,or,分页查询MyBatis Generator 介绍mybatis自动生成example的使用

MyBatis Generator 介绍

MyBatis Generator:简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及bean类。支持基本的增删改查,以及QBC风格的条件查询。但是表连接、 存储过程等这些复杂sql的定义需要我们手工编写。

QBC检索

QBC(Query By Criteria)是一种面向对象的查询方式,这种查询方式以函数API的方式动态地设置查询条件,组成查询语句。

使用QBC(Query By Criteria)API来检索对象。这种API封装了基本字符串形式的查询语句;提供了更加面向对象的接口,它主要由criteria接口,Criterion接口和Expression类组成,Criterion接口和Expression类组成,它支持在运行时动态生成查询语句。

步骤:

1.调用Session的createCriteria(0方法创建一个Criteria对象。

2.设定查询条件。Expression类提供了一系列用于设定查询条件的静态方法,这些静态方法都返回Criterion实例,每个Criterion实例代表一个查询条件,Criteria的add()方法用于加入查询条件。

3.调用Criteria的list()方法执行查询语句。该方法返回List类型的查询结果,在List集合中存放了符合查询条件的持久化对象

Mybatis:Example类的使用--基本增删改查,模糊查询,排序,or,分页查询MyBatis Generator 介绍mybatis自动生成example的使用
Mybatis:Example类的使用--基本增删改查,模糊查询,排序,or,分页查询MyBatis Generator 介绍mybatis自动生成example的使用

MyBatis Generator(MBG)会为每个字段产生如上的Criterion,如果表的字段比较多,产生的Example类会十分庞大。

  • insert
  • update by primary key
  • update by example (using a dynamic where clause)
  • delete by primary key
  • delete by example (using a dynamic where clause)
  • select by primary key
  • select by example (using a dynamic where clause)
  • count by example
具体参考: http://mybatis.org/generator/index.html

mybatis自动生成example的使用

mybatis的逆向工程中会生成实例及实例对应的example,example用于添加条件,相当where后面的部分

xxxExample example = new xxxExample();

Criteria criteria = new Example().createCriteria();

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 {……}      
Mybatis:Example类的使用--基本增删改查,模糊查询,排序,or,分页查询MyBatis Generator 介绍mybatis自动生成example的使用

example常见方法

方法 说明
example.setOrderByClause(“字段名 ASC”);
//注意:排序使用的是列名
example.setOrderByClause("create_time desc,update_time desc");      
添加升序排列条件,DESC为降序
example.setDistinct(false) 去除重复,boolean型,true为选择不重复的记录。
criteria.andXxxIsNull 添加字段xxx为null的条件
criteria.andXxxIsNotNull 添加字段xxx不为null的条件
criteria.andXxxEqualTo(value) 添加xxx字段等于value条件
criteria.andXxxNotEqualTo(value) 添加xxx字段不等于value条件
criteria.andXxxGreaterThan(value) 添加xxx字段大于value条件
criteria.andXxxGreaterThanOrEqualTo(value) 添加xxx字段大于等于value条件
criteria.andXxxLessThan(value) 添加xxx字段小于value条件
criteria.andXxxLessThanOrEqualTo(value) 添加xxx字段小于等于value条件
criteria.andXxxIn(List<?>) 添加xxx字段值在List<?>条件
criteria.andXxxNotIn(List<?>) 添加xxx字段值不在List<?>条件
criteria.andXxxLike(“%”+value+”%”) 添加xxx字段值为value的模糊查询条件
criteria.andXxxNotLike(“%”+value+”%”) 添加xxx字段值不为value的模糊查询条件
criteria.andXxxBetween(value1,value2) 添加xxx字段值在value1和value2之间条件
criteria.andXxxNotBetween(value1,value2) 添加xxx字段值不在value1和value2之间条件

 example复杂用法

1. or查询

UserExample example = new UserExample();
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);      
Mybatis:Example类的使用--基本增删改查,模糊查询,排序,or,分页查询MyBatis Generator 介绍mybatis自动生成example的使用
类似于:select * from user where name={#user.name} or sex={#user.sex} ;