mybatis-plugs使用手册

介绍

文档:http://106.13.210.248:9880

1.对mybatis进行扩展增强

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

软件架构

软件架构说明

1.不对mybatis做任何修改 只做mybatis的扩展增强

2.代码自动生成,根据表名可快速生成xxxMapper.java、xxxService.java、xxxServiceImpl.java、xxxController.java、xxxMapper.xml

3.增加swagger配置方便前台调用接口

4.增加logback日志记录系统运行情况 

5.增加druid数据源监控sql运行情况

6.本系统采用前后端完全分离的模式:前端采用vue.js框架 项目地址:https://gitee.com/wdyun/enhancevue

7.用户密码采用MD5加salt的方式个人信息安全有保障

8.角色绑定菜单权限 用户只能查看到所属角色绑定的菜单

9.采用Redis做为缓存框架

10.采用mongodb做为文件存储系统

11.采样RabbitMq作为消息服务

快速开始

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

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

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

id name

 

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项目

第一步:mybatis-plugs使用手册_第1张图片

第二步:填写项目信息mybatis-plugs使用手册_第2张图片

第二步:选择LomBok插件mybatis-plugs使用手册_第3张图片

项目基本结构

mybatis-plugs使用手册_第4张图片

配置 Maven

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

mybatis-plugs当前版本 2.0.0

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

SpringBoot

maven:

 
     com.enbatis  
     mybatis-plugs  
    4.0.1  

gradle:

compile(" com.enbatis:mybatis-plugs:4.0.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

mybatis-plugs使用手册_第5张图片

修改启动类

在启动类上加上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.在控制台输入作者 以及 要生成代码的表

mybatis-plugs使用手册_第6张图片

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

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

mybatis-plugs使用手册_第7张图片

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

mybatis-plugs使用手册_第8张图片

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

mybatis-plugs使用手册_第9张图片

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

mybatis-plugs使用手册_第10张图片

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

mybatis-plugs使用手册_第11张图片

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

list

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

page

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

selectCount

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

saveBatch

/** 
* 批量插入 
* @param entityList 
* @return 
*/ 
int saveBatch(List 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)