mybatis-plugs使用手册

2023-10-14 09:30
文章标签 mybatis 使用手册 plugs

本文主要是介绍mybatis-plugs使用手册,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

文档:mybatis-plugs-spring-boot-starter: mybatis-plugs支持springboot

1.对mybatis进行扩展增强

2实现mybatis的CRUD简化操作 不用在书写基本的增删改查sql 全部通过BaseMapper 实现

软件架构

软件架构说明

1.不对mybatis做任何修改 只做mybatis的扩展增强2.代码自动生成,根据表名可快速生成xxxMapper.java、xxxService.java、xxxServiceImpl.java、xxxController.java、xxxMapper.xml3.增加swagger配置方便前台调用接口4.增加logback日志记录系统运行情况 5.增加druid数据源监控sql运行情况6.本系统采用前后端完全分离的模式:前端采用vue.js框架 项目地址:https://gitee.com/wdyun/enhancevue7.用户密码采用MD5加salt的方式个人信息安全有保障8.角色绑定菜单权限 用户只能查看到所属角色绑定的菜单9.采用Redis做为缓存框架10.采用mongodb做为文件存储系统11.采样RabbitMq作为消息服务

快速开始

我们将通过一个简单的 Demo 来阐述 MyBatis-Plugs 的强大功能,在此之前,我们假设您已经:

  • 拥有 Java 开发环境、相应 IDE以及mysql数据库
  • 熟悉 Spring Boot
  • 熟悉 Maven

现有一张 User 表,其表结构如下:

idname

age

tel

1

Job

21

15764226795

2

Jack

18

15764226796

3

June

19

15764226797

4

Ann

20

15764226798

其对应的数据库 Sql 脚本如下:

     DROP TABLE IF EXISTS user ;CREATE TABLE user(id BIGINT (20) NOT NULL COMMENT '主键ID', name VARCHAR (30) NOT NULL COMMENT '姓名', age INT (11) COMMENT '年龄', tel VARCHAR (11) COMMENT '电话', PRIMARY KEY (id) )

Question

如果从零开始用 MyBatis-Plugs来实现该表的增删改查我们需要做什么呢?

创建SpringBoot项目

使用 idea 创建SpringBoot项目

第一步:

第二步:填写项目信息

第二步:选择LomBok插件

项目基本结构

配置 Maven

springBoot项目建立好之后,在pom.xml文件加入mybatis-plugs的依赖

mybatis-plugs当前版本 4.1.2

请关注mybatis-plugs最新版本 mybatis-plugs

SpringBoot

maven:

	<dependency><groupId>com.enbatis</groupId><artifactId>mybatis-plugs-spring-boot-starter</artifactId><version>1.2.1</version></dependency>

gradle:

compile(" com.enbatis:mybatis-plugs-spring-boot-starter:1.2.1 ")

小提示

引入 mybatis-plugs 之后无需再次引入mybatis

配置 yml

修改 application.properties 为application.yml

新增 开发环境: application-dev.yml

新增 测试环境: application-test.yml

新增 生产环境: application-pro.yml

小说明

1.开发环境为我们进行开发所使用的配置

2.测试环境为测试人员进行软件测试所使用的配置

3.生产环境为上线部署所使用的配置

application.yml

spring: 
   profiles: 
     active: dev 
server: 
  port: 8080

tip:

spring: profiles: active: dev 指定所使用的环境

port:8080 指定项目所启动的端口为8080端口

application-dev.yml

修改启动类

在启动类上加上Mapper扫描的注解 @MapperScan("com.enbatis.mybatisplugs.mapper")

代码生成器

我们通过数据库表可以快速生成entity,controller,mapper,service,serviceImpl,mapping.xml

说明

生成代码需要连接数据库,所以我们需要进行数据库的连接,只需要通过配置数据库基本信息,利用mybatis-plugs的代码生成类 CodeGenerator2 即可

配置代码生成器

在启动类的同级目录下 建立生成器类 CodeGenerate

import com.enbatis.mybatisplugs.generate.CodeGenerator2; 
public class CodeGenerate { 
private static String url="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC& 
useUnicode=true&characterEncoding=utf8&useSSL=false"; 
private static String user="root"; 
private static String psd="111111"; 
private static String filePath="D://generate_code//"; 
public static void main(String[] args) { 
CodeGenerator2 codeGenerator2=new CodeGenerator2(url,user,psd,filePath); 
codeGenerator2.generate(CodeGenerate.class); 

注释:

url: 数据库连接url

root: 数据库用户名

psd: 数据库密码

filePath: java代码生成位置(防止代码覆盖所以我们不会自动生成到对应的代码位置)

CodeGenerator2: mybatis-plugs代码核心生成器

如何使用?

1.执行main方法

2.在控制台输入作者 以及 要生成代码的表

3.输入完成之后点击回车

4.当输出以下信息表示代码生成成功

5.去代码生成的位置查看生成的代码

6.建立代码包:entity、controller、mapper、service、impl以及xml的文件夹

7.将生成的代码复制到对应的文件夹

8.启动项目 访问 http://localhost:8080/v1/sys_user/list 查询所有用户列表

CRUD 接口

Service CRUD 接口

说明

通过封装mybatis的 BaseService接口即可快速实现数据库的CRUD操作

泛型 T 为任意实体对象

参数 Serializable 为任意类型主键 Mybatis-Plugs 不推荐使用复合主键约定每一张表都有自己的唯一 id 主键

对象 Wrapper 为 条件构造器

Insert

/** 
* 插入一条记录 
* @param entity 传入的插入对象 
* @return T 
*/ 
T insert(T entity); 

deleteById

/** 
* 根据id删除一条数据 
* @param id 传入的查询ID 
* @return 删除条数 
*/ 
int deleteById(Serializable id); 

updateById

/** 
* 根据id更新一条数据 
* @param bean 传入的更新对象 
* @return 返回更新条数 
*/ 
int updateById(T bean); 

update

/** 
* 批量更新数据 
* @param bean 传入的更新的内容 
* @param wrapper 传入的更新条件 
*/ 
int update(T bean,Wrapper<T> wrapper); 

list

/** 
* 查询多条数据 
* @param wrapper 查询条件 
* @return 集合 
*/ 
List<T> list(Wrapper<T> wrapper); 

page

/** 
* @param page 分页对象 
* @param wrapper 查询条件 
* @return Pages 分页数据 
*/ 
Pages<T> page(Page<T> page, Wrapper<T> wrapper); 

selectCount

/** 
* 查询count 
* @param wrapper 查询条件 
* @return 数量 
*/ 
int selectCount(Wrapper<T> wrapper); 

saveBatch

/** 
* 批量插入 
* @param entityList 
* @return 
*/ 
int saveBatch(List<T> entityList); 

扩展:

以上只列出部分条件构造器的方法,我们还有getById(根据id获取单条)、saveBatch(批量保存)等等, 更多请查看 mybatis-plugs

条件构造器 Wrapper

eq

如果我们想快速查询数据库表sys_user 的姓名为 “Tom” 如何进行操作呢?

回答:只需service调用list 传入 条件构造器Wrapper Wrapper调用 eq 方法,下面的方法即为 查询姓名是Tom的SysUser列表

sysUserService.list(new Wrapper<>(sysUser).eq("name","Tom"));

ne

如果我们想快速查询数据库表sys_user 的姓名不是 “Tom” 如何进行操作呢?

回答:只需service调用list 传入 条件构造器Wrapper Wrapper调用 ne 方法,下面的方法即为 查询姓名不是Tom的SysUser列表

sysUserService.list(new Wrapper<>(sysUser).ne("name","Tom"));

like

如果我们想根据姓名模糊查询,怎么操作呢?

回答:只需service调用list 传入 条件构造器Wrapper Wrapper调用 like 方法,下面的方法即为 根据姓名“Tom”模糊查询

sysUserService.list(new Wrapper<>(sysUser).like("name","Tom"));

in

如果我们想查询姓名是“Tom”,“Jack”,“June”怎么操作呢?

回答:只需service调用list 传入 条件构造器Wrapper Wrapper调用 in 方法,传入ArrayList即可

List arrayList=new ArrayList<>(); 
arrayList.add("Tom"); 
arrayList.add("Jack"); 
arrayList.add("June"); sysUserService.list(new Wrapper<>(sysUser).in("name",arrayList));

扩展:

以上只列出部分条件构造器的方法,我们还有notNull(非空查询)、isNull(空值查询)、setSqlSelect(固定列查询)等等, 更多请查看 mybatis-plugs

这篇关于mybatis-plugs使用手册的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/209633

相关文章

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

mybatis-plus如何根据任意字段saveOrUpdateBatch

《mybatis-plus如何根据任意字段saveOrUpdateBatch》MyBatisPlussaveOrUpdateBatch默认按主键判断操作类型,若需按其他唯一字段(如agentId、pe... 目录使用场景方法源码方法改造首先在service层定义接口service层接口实现总结使用场景my

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

Mybatis-Plus 3.5.12 分页拦截器消失的问题及快速解决方法

《Mybatis-Plus3.5.12分页拦截器消失的问题及快速解决方法》作为Java开发者,我们都爱用Mybatis-Plus简化CRUD操作,尤其是它的分页功能,几行代码就能搞定复杂的分页查询... 目录一、问题场景:分页拦截器突然 “失踪”二、问题根源:依赖拆分惹的祸三、解决办法:添加扩展依赖四、分页

MyBatis流式查询两种实现方式

《MyBatis流式查询两种实现方式》本文详解MyBatis流式查询,通过ResultHandler和Cursor实现边读边处理,避免内存溢出,ResultHandler逐条回调,Cursor支持迭代... 目录MyBATis 流式查询详解:ResultHandler 与 Cursor1. 什么是流式查询?