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

简介: 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集合中存放了符合查询条件的持久化对象

20201226165759165.png

image.gif

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

    image.gif

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

    image.gif

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

    目录
    相关文章
    |
    8月前
    |
    SQL XML Java
    Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
    Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
    63 0
    |
    Java 数据库连接 数据库
    探究Java中的MyBatis Plus注解 @OrderBy:优雅实现查询结果排序
    在数据库查询中,对查询结果进行排序是常见的需求之一。MyBatis Plus作为一款强大的ORM框架,提供了注解 `@OrderBy`,使得开发者能够轻松实现查询结果排序,而无需手动编写复杂的排序语句。本文将详细介绍 `@OrderBy` 注解的用法及其在持久层开发中的应用。
    2282 0
    |
    SQL Java 数据库连接
    Mybatis中sql拦截增强-AOP+interceptor实现分页和排序
    基于interceptor可以实现sql的完整打印,除了实现打印之外。其实还可以实现分页和排序,下面的分页和排序基于aop+mybatis的interceptor实现。其本质还是对mappedStament的boundSql进行增强。 下面的项目来源于github,通过这个我们可以很好的学习mybatis中插件interceptor的使用。
    882 0
    Mybatis中sql拦截增强-AOP+interceptor实现分页和排序
    |
    XML SQL Java
    mybatis学习(22):查询排序
    mybatis学习(22):查询排序
    217 0
    mybatis学习(22):查询排序
    |
    SQL Java 数据库连接
    MyEclipse2015整合SSM框架:详解Mybatis逆向工程配置一对一关联表,查询结果排序问题
    MyEclipse2015整合SSM框架:详解Mybatis逆向工程配置一对一关联表,查询结果排序问题http://www.bieryun.com/3343.html 先说问题:在搭建SSM(Spring+SpringMVC+Mybatis)框架,从后台数据库查询出数据提供给前端页面进行分页显示时候,发现分页查询出来的结果在前端页面上显示并不是按照主键 id 排序的,而是先按照关联表id,也就是主表外键的 id 分成不同的部门(我这里是employee 和 department) ,每个部门中再按照 id 顺序显示记录。
    2053 0
    |
    SQL Java 数据库连接
    MyEclipse2015整合SSM框架:详解Mybatis逆向工程配置一对一关联表,查询结果排序问题
    MyEclipse2015整合SSM框架:详解Mybatis逆向工程配置一对一关联表,查询结果排序问题 先说问题:在搭建SSM(Spring+SpringMVC+Mybatis)框架,从后台数据库查询出数据提供给前端页面进行分页显示时候,发现分页查询出来的结果在前端页面上显示并不是按照主键 id 排序的,而是先按照关联表id,也就是主表外键的 id 分成不同的部门(我这里是employee 和 department) ,每个部门中再按照 id 顺序显示记录。
    2538 0
    |
    3月前
    |
    Java 数据库连接 Maven
    mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
    这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
    163 2
    mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
    |
    3月前
    |
    SQL JSON Java
    mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
    这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
    92 1
    mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
    |
    3月前
    |
    前端开发 Java Apache
    Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
    本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
    621 1
    Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个