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-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

Mybatis Plus JSqlParser解析sql语句及JSqlParser安装步骤

《MybatisPlusJSqlParser解析sql语句及JSqlParser安装步骤》JSqlParser是一个用于解析SQL语句的Java库,它可以将SQL语句解析为一个Java对象树,允许... 目录【一】jsqlParser 是什么【二】JSqlParser 的安装步骤【三】使用场景【1】sql语

mybatis的mapper对应的xml写法及配置详解

《mybatis的mapper对应的xml写法及配置详解》这篇文章给大家介绍mybatis的mapper对应的xml写法及配置详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录前置mapper 对应 XML 基础配置mapper 对应 xml 复杂配置Mapper 中的相