mybatis中关于example类详解

2023-05-16

一、什么是example类

 mybatis-generator会为每个字段产生如上的Criterion,如果表的字段比较多,产生的Example类会十分庞大。理论上通过example类可以构造你想到的任何筛选条件。在mybatis-generator中加以配置,配置数据表的生成操作就可以自动生成example了。
 下面是mybatis自动生成example的使用。

二、mapper接口中的方法解析

public interface AdminuserMapper {
    // 按条件计数
    int countByExample(AdminuserExample example);
    // 按条件删除
    int deleteByExample(AdminuserExample example);
    // 按主键删除
    int deleteByPrimaryKey(Integer uid);
    // 插入数据(返回值为ID)
    int insert(Adminuser record);
    // 插入一条数据,只插入不为null的字段
    int insertSelective(Adminuser record);
    // 查询数据
    List<Adminuser> selectByExample(AdminuserExample example);
    // 按主键查询
    Adminuser selectByPrimaryKey(Integer uid);
    // 按条件更新值不为null的字段
    int updateByExampleSelective(@Param("record") Adminuser record, @Param("example") AdminuserExample example);
    // 按条件更新
    int updateByExample(@Param("record") Adminuser record, @Param("example") AdminuserExample example);
    // 按主键更新值不为null的字段
    int updateByPrimaryKeySelective(Adminuser record);
    //  按主键更新
    int updateByPrimaryKey(Adminuser record);
}

三、example实例解析

public class UserExample {
	//升序还是降序
	//参数格式:字段+空格+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 是根据 user 表生成的,UserMapper属于 dao 层,UserMapper.xml 是对应的映射文件

UserMapper接口:

long countByExample(CompetingStoreExample example);
List<CompetingStore> 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<User> userList = userMapper.selectByExample(example);

类似于:select * from user where name={#user.name} and sex={#user.sex} order by age asc;

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

七、模糊查询

if(!StringUtils.isNotBlank(user.getName())){
     criteria.andNameLIke(%+name+%);
}

List<User>  userList=userMapper.selectByExample(example);

类似于:select * from user where name like %{#user.name}%

八、分页查询

int start = (currentPage - 1) * rows;
//分页查询中的一页数量
example.setPageSize(rows);   
//开始查询的位置
example.setStartRow(start);
List<User> userList=userMapper.selectByExample(example);

类似于:select * from user limit start to rows


如果有收获!!! 希望老铁们来个三连,点赞、收藏、转发。
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mybatis中关于example类详解 的相关文章

  • 为什么要搭建自己的博客

    为什么要搭建自己的博客 xff1f 很多小伙伴起初和我有一样的疑惑 搭建博客的原因如下 现在市面上的博客很多 xff0c 比如如CSDN xff0c 博客园 xff0c 简书等平台 xff0c 可以直接在上面发表 xff0c 用户交互做的好
  • 为什么要写博客

    为什么要写博客 xff1f 我相信很多小伙伴和我有一样的疑惑 最近我也常和身边的朋友说写写博客做总结 xff0c 因为有的时候面试官遇到技术还不错的面试者会问你有没有博客 xff0c 如果有的话会在面试的时候额外加分 据我观察几乎每一个程序
  • hexo搭建博客【详细步骤】适合初学者

    为什么要搭建自己的博客 xff1a https blog csdn net weixin 45606067 article details 107966915 下面说一下如何从零开始上手搭建博客 Hexo搭建博客步骤 xff1a 搭建博客需
  • SpringBoot(一)概述、HelloWord案例

    1 SpringBoot 简介 回顾什么是Spring Spring是一个开源框架 xff0c 2003 年兴起的一个轻量级的Java 开发框架 Spring是为了解决企业级应用开发的复杂性而创建的 xff0c 简化开发 Spring是如何
  • PyTorch:view() 与 reshape() 区别详解

    总之 xff0c 两者都是用来重塑tensor的shape的 view只适合对满足连续性条件 xff08 contiguous xff09 的tensor进行操作 xff0c 而reshape同时还可以对不满足连续性条件的tensor进行操
  • SpringBoot(二)运行原理探究

    我们之前写的HelloSpringBoot xff0c 到底是怎么运行的呢 xff0c Maven项目 xff0c 我们一般从 pom xml文件探究起 SpringBoot2 3 3版本的官网文档说明 xff1a https docs s
  • idea查看源码时总是出现 .class而不是 .java源码

    步骤 1 File gt Settings gt Maven gt importing xff08 勾选上 Sources 和 Documentation xff09 2 右键项目的pom xml gt Maven gt Reimport
  • SpringBoot(三)yaml配置注入

    配置文件 SpringBoot使用一个全局的配置文件 xff0c 配置文件名称是固定的 application properties 语法结构 xff1a key 61 value application yml 语法结构 xff1a ke
  • SpringBoot(四)JSR303数据校验及多环境切换

    1 JSR303数据校验 先看看如何使用 Springboot 中可以用 64 validated 来校验数据 xff0c 如果数据异常则会统一抛出异常 xff0c 方便异常中心统一处理 我们这里来写个注解让我们的 name 只能支持 Em
  • SpringBoot(五)自动配置原理

    1 配置文件到底能写什么 xff1f 怎么写 xff1f SpringBoot 官网有大量的配置说明 xff0c 我们是无法全部记住的 xff1b SpringBoot 2 3 3 官网文档 2 分析自动配置原理 这里我们以 HttpEnc
  • SpringBoot(六)日志处理

    1 日志框架 简单分析案例 xff1a 小张 xff1b 开发一个大型系统 xff1b 1 System out println 34 34 xff1b 将关键数据打印在控制台 xff1b 去掉 xff1f 写在一个文件 xff1f 2 框
  • SpringBoot(七)Web开发静态资源处理

    1 静态资源处理 静态资源映射规则 首先 xff0c 我们搭建一个普通的 SpringBoot 项目 xff0c 回顾一下HelloWorld程序 xff01 写请求非常简单 xff0c 那我们要引入我们前端资源 xff0c 我们项目中有许
  • SpringBoot(八)Thymeleaf模板引擎

    模板引擎 前端交给我们的页面 xff0c 是 html 页面 如果是我们以前开发 xff0c 我们需要把他们转成 jsp 页面 xff0c jsp 好处就是当我们查出一些数据转发到JSP页面以后 xff0c 我们可以用jsp轻松实现数据的显
  • SpringBoot(九)MVC自动配置原理【深入源码】

    官网阅读 在进行项目编写前 xff0c 我们还需要知道一个东西 xff0c 就是 SpringBoot 对我们的 SpringMVC 还做了哪些配置 xff0c 包括如何扩展 xff0c 如何定制 只有把这些都搞清楚了 xff0c 我们在之
  • SpringBoot(十)RestfulCRUD

    我们先创建一个SpringBoot的 web 项目 xff0c 并导入thymeleaf lombok 坐标 1 环境搭建 首先我们先将静态资源及页面拷入到项目中 然后我们编写 pojo dao类 这里我们没有连接数据库 xff0c Dao
  • PyTorch:torch.sum

    torch sum 函数定义 xff1a torch sum input dim keepdim 61 False dtype 61 None Tensor 作用 xff1a 返回输入tensor的指定维度dim上的和 参数keepdim表
  • SpringBoot(十一)国际化

    有的时候 xff0c 我们的网站会去涉及中英文甚至多语言的切换 xff0c 这时候我们就需要学习国际化了 xff01 准备工作 先在IDEA中统一设置 properties 的编码问题 xff01 编写国际化配置文件 xff0c 抽取页面需
  • SpringBoot(十二)整合JDBC

    SpringData简介 对于数据访问层 xff0c 无论是 SQL 关系型数据库 还是 NOSQL 非关系型数据库 xff0c Spring Boot 底层都是采用 Spring Data 的方式进行统一处理 Spring Boot 底层
  • SpringBoot(十三)整合Druid

    Druid简介 Java程序很大一部分要操作数据库 xff0c 为了提高性能操作数据库的时候 xff0c 又不得不使用数据库连接池 Druid 是阿里巴巴开源平台上一个数据库连接池实现 xff0c 结合了 C3P0 DBCP 等 DB 池的
  • SpringBoot(十四)整合MyBatis

    官方文档 xff1a http mybatis org spring boot starter mybatis spring boot autoconfigure Maven仓库地址 xff1a https mvnrepository co

随机推荐

  • SpringBoot(十五)集成SpringSecurity

    安全简介 在 Web 开发中 xff0c 安全一直是非常重要的一个方面 安全虽然属于应用的非功能性需求 xff0c 但是应该在应用开发的初期就考虑进来 如果在应用开发的后期才考虑安全的问题 xff0c 就可能陷入一个两难的境地 xff1a
  • SpringBoot(十七)集成Swagger

    Swagger简介 前后端分离 前端 gt 前端控制层 视图层后端 gt 后端控制层 服务层 数据访问层前后端通过API进行交互前后端相对独立且松耦合 产生的问题 前后端集成 xff0c 前端或者后端无法做到 及时协商 xff0c 尽早解决
  • SpringBoot(十六)集成Shiro

    1 Shiro简介 什么是Shiro xff1f Apache Shiro 是一个Java的安全 xff08 权限 xff09 框架 Shiro 可以非常容易的 xff0c 开发出足够好的应用 xff0c 其不仅可以用在Java环境 xff
  • SpringBoot(十八)异步、定时、邮件任务

    异步任务 异步处理还是非常常用的 xff0c 比如我们在网站上发送邮件 xff0c 后台会去发送邮件 xff0c 此时前台会造成响应不动 xff0c 直到邮件发送完毕 xff0c 响应才会成功 xff0c 所以我们一般会采用多线程的方式去处
  • SpringBoot(二十)集成Dubbo和Zookeeper

    分布式理论 什么是分布式系统 xff1f 在 分布式系统原理与范型 一书中有如下定义 xff1a 分布式系统是若干独立计算机的集合 xff0c 这些计算机对于用户来说就像单个相关系统 xff1b 分布式系统是由一组通过网络进行通信 为了完成
  • SpringBoot(十九)集成Redis

    SpringBoot 集成 Redis 主要就是使用 RedisTemplate 类来进行各种操作 可以很多人没有注意到 xff0c 在 SpringBoot 2 x 之后 xff0c 底层访问redis 已经不再使用 jedis xff0
  • PyTorch:torch.linspace

    函数定义 xff1a torch linspace start end steps 61 100 out 61 None dtype 61 None layout 61 torch strided device 61 None requir
  • 面向对象(1/3)类和对象

    文章目录 面向过程 xff08 POP xff09 与面向对象 xff08 OOP xff09 类和对象 xff08 面向对象的两大要素 xff09 几个概念的使用说明类和对象的使用类的语法格式对象的创建和使用类的访问机制对象的分析 1 属
  • 面向对象(2/3)封装性、继承性、多态性

    文章目录 一 面向对象特征一 xff1a 封装性封装和隐藏权限修饰符类的成员之三 xff1a 构造器属性赋值的先后顺序JavaBeanthis关键字的使用package关键字的使用MVC设计模式import关键字的使用Eclipse中的快捷
  • Git实用命令大全(附思维导图)

    一 平时我们经常用的命令 1 基础命令 span class token comment 初始化 span span class token function git span init span class token comment 将
  • 面向对象(3/3)抽象类,接口、内部类、代码块

    文章目录 1 java lang Object1 61 61 和equals 的使用2 equals 方法的重写3 toString 的使用 2 JUnit单元测试的使用3 包装类面试题 4 static关键字的使用5 设计模式单例设计模式
  • 常用类String、时间日期类

    文章目录 1 String1 xff09 String内存解析2 xff09 String的使用3 xff09 String实例化4 xff09 图解两种创建字符串方式的区别5 xff09 图解字符串的存储6 xff09 图解字符串对象的存
  • 图书馆管理系统【SSM含SQL文件】

    项目源代码 https gitee com StarSea007 mylibrary ssm 编译环境 jdk 1 8mysql 5 0 及以上tomcat 8 框架 Spring 43 SpringMvc 43 Mybatis jar包管
  • Servlet及相关接口 【最全总结】

    1 Servlet 简介 1 xff09 从广义上来讲 xff0c Servlet 规范是 Sun 公司制定的一套技术标准 xff0c 包含与 Web 应用相关的一系列接口 xff0c 是 Web 应用实现方式的宏观解决方案 而具体的 Se
  • springmvc请求参数绑定 | 中文乱码 | 自定义类型转换器

    1 绑定的机制 表单中请求参数都是基于 key 61 value 的 SpringMVC 绑定请求参数的过程是通过把表单提交请求参数 xff0c 作为控制器中方法参数进行绑的 例如 xff1a span class token operat
  • 转发与重定向【面试题】

    请求转发与重定向 请求转发和重定向是 web 应用页面跳转的主要手段 xff0c 应用十分广泛 xff0c 所以我们一定要搞清楚他们的区别 1 请求转发 1 xff09 第一个 Servlet 接收到了浏览器端的请求 xff0c 进行了一定
  • 路径问题:相对路径与绝对路径

    1 提出问题 创建 Web 应用 Path xff0c 目录结构如图所示 在 a html 中有超链接 lt a href 61 34 b html 34 gt To b html lt a gt 如果先直接访问 a html xff0c
  • PyTorch:torch.Tensor.repeat()、expand()

    目录 1 torch Tensor repeat 2 torch Tensor expand 1 torch Tensor repeat 函数定义 xff1a repeat sizes Tensor 作用 xff1a 在指定的维度上重复这个
  • Cookie学习笔记

    1 cookie 简介 1 1 什么是 cookie cookie xff0c 有时我们也用其复数形式 cookies xff0c 是服务端保存在浏览器端的数据片段 以 key value 的形式进行保存 每次请求的时候 xff0c 请求头
  • mybatis中关于example类详解

    一 什么是example类 mybatis generator会为每个字段产生如上的Criterion xff0c 如果表的字段比较多 产生的Example类会十分庞大 理论上通过example类可以构造你想到的任何筛选条件 在mybati