Mybatis:Example类的使用--基本增删改查,模糊查询,排序,or,分页查询

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 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 {……}

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);

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琦彦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值