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:Example类的使用--基本增删改查,模糊查询,排序,or,分页查询

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

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,分页查询

    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,分页查询

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

    上一篇:SAP PLM 进阶 2 – 主要核心功能2


    下一篇:Python3入门(十)File方法