Springboot整合MybatisPlus(增删改查,代码生成)

        都说程序员的终极目标就是偷懒,虽然mybatis已经给开发带来很大便利,example类也有很多强大的功能,但是还是满足不了"勤劳"的程序员们。因此国内程序员在 Mybatis 的基础上开发了Mybatis Plus,只做增强不做改变,只为简化开发、提高效率而生。

有头有尾,我们就从新建项目开始吧:

Default和Customer按照网络情况,哪个进得去进哪个。点击Next

Springboot整合MybatisPlus(增删改查,代码生成)_第1张图片

上下红框内名字一般保持一致 ,next

Springboot整合MybatisPlus(增删改查,代码生成)_第2张图片

选择需要添加的依赖:
DevTools 热部署工具。Lombok:在实体类添加注解可自动生成set get tostring等代码

Springboot整合MybatisPlus(增删改查,代码生成)_第3张图片

web项目必选

Thymeleaf一个模板引擎,类似jsp

Springboot整合MybatisPlus(增删改查,代码生成)_第4张图片
选择sql驱动


Springboot整合MybatisPlus(增删改查,代码生成)_第5张图片

开启自动导入

Springboot整合MybatisPlus(增删改查,代码生成)_第6张图片

等待下载依赖。。。

项目初始化创建完成。

1、pom文件导入jar包


     mysql
     mysql-connector-java


     com.baomidou
     mybatis-plus-boot-starter
     3.4.0

2、编写配置文件(数据库配置)

3、entity包下新建一个user类,使用@Data注解自动添加set get方法

Springboot整合MybatisPlus(增删改查,代码生成)_第7张图片

4、创建mapper接口,继承BaseMapper,传入一个需要操作的泛型。

Springboot整合MybatisPlus(增删改查,代码生成)_第8张图片

开启mapper包的扫描,注入到spring中

创建一个测试类

Springboot整合MybatisPlus(增删改查,代码生成)_第9张图片

简单测试一个查询

Springboot整合MybatisPlus(增删改查,代码生成)_第10张图片

如果需要在控制台查看执行的sql语句,配置文件添加:

Springboot整合MybatisPlus(增删改查,代码生成)_第11张图片
Springboot整合MybatisPlus(增删改查,代码生成)_第12张图片

常用注解:

1、@TableName 映射数据库的表名

该demo中如果实体类不叫User是UserInfo,则改为

2、@TableField 映射数据表非主键字段名,


Springboot整合MybatisPlus(增删改查,代码生成)_第13张图片
Springboot整合MybatisPlus(增删改查,代码生成)_第14张图片

exist表示是否为数据表字段 false,true

Springboot整合MybatisPlus(增删改查,代码生成)_第15张图片

select表示是否查询该字段

fill表示是否自动填充,将对象存入数据库的时候,由Mybatis Plus自动给某些字段赋值。
(如时间create_time,update_time)
1、数据库添加该字段
2、实体类添加fill注解
3、编写Handler类,声明@Component

Springboot整合MybatisPlus(增删改查,代码生成)_第16张图片
Springboot整合MybatisPlus(增删改查,代码生成)_第17张图片

3、@TableId 设置主键映射,value映射主键字段名

type 设置主键类型(主键的生成策略,自增?某种算法生成?)默认NONE(雪花算法实现)
Input 如果开发人员没有赋值,则采用数据库自增的方式赋值

Springboot整合MybatisPlus(增删改查,代码生成)_第18张图片
主键映射
Springboot整合MybatisPlus(增删改查,代码生成)_第19张图片
type 设置主键类型
Springboot整合MybatisPlus(增删改查,代码生成)_第20张图片

4、@Version 标记乐观锁(处理并发,防止数据被两个线程修改):通过version字段,当数据修改时,会以version作为条件 当条件成立才会成功
version=1  (如下两线程互斥)
线程1:update ...set version = 2 where version = 1
线程2:update .. set version = 2 where version = 1

1.数据库添加version字段:默认为1

2.实体类添加version成员变量,并且添加Version注解
3.编写并注册配置类

Springboot整合MybatisPlus(增删改查,代码生成)_第21张图片

4.测试
此时乐观锁version将会修改

Springboot整合MybatisPlus(增删改查,代码生成)_第22张图片

5、@EnumValue 通用枚举类注解,将数据库字段映射成实体类的枚举类型成员变量
方法一使用注解,
方法二 实现接口 implement IEnum 返回Integer code

1.User表添加status字段,设置默认值为1
2.编写枚举类,使用该注解

3.UserInfo类中添加该枚举

Springboot整合MybatisPlus(增删改查,代码生成)_第23张图片

4.application.yml中添加

Springboot整合MybatisPlus(增删改查,代码生成)_第24张图片

5.查询所有测试

Springboot整合MybatisPlus(增删改查,代码生成)_第25张图片
方法二:接口

6、@TableLogic 映射逻辑删除(假的删掉,如用户注销,并不是真正从数据库删除,而是设定一个标志字段)

1.User数据表添加deleted字段,默认为0 为没有删除
2.实体类添加注解

Springboot整合MybatisPlus(增删改查,代码生成)_第26张图片

3.application.yml添加配置:

Springboot整合MybatisPlus(增删改查,代码生成)_第27张图片

4.测试删除

Springboot整合MybatisPlus(增删改查,代码生成)_第28张图片

再次执行查询将不再被显示deleted=1的信息

增删改查

条件查询

Springboot整合MybatisPlus(增删改查,代码生成)_第29张图片

模糊查询

Springboot整合MybatisPlus(增删改查,代码生成)_第30张图片

联合查询

Springboot整合MybatisPlus(增删改查,代码生成)_第31张图片

排序

Springboot整合MybatisPlus(增删改查,代码生成)_第32张图片
Springboot整合MybatisPlus(增删改查,代码生成)_第33张图片
根据多个ID查询
Springboot整合MybatisPlus(增删改查,代码生成)_第34张图片

分页查询
1.添加配置

Springboot整合MybatisPlus(增删改查,代码生成)_第35张图片
舍弃

2.测试 current 当前页,size 每页数
注:逻辑删除deleted字段标记为1的依然不会被查到

Springboot整合MybatisPlus(增删改查,代码生成)_第36张图片
Springboot整合MybatisPlus(增删改查,代码生成)_第37张图片

查询一条数据:

Springboot整合MybatisPlus(增删改查,代码生成)_第38张图片

自定义sql(注解版)多表关联查询

Springboot整合MybatisPlus(增删改查,代码生成)_第39张图片

sql语句如下:

1.创建一个VO类

Springboot整合MybatisPlus(增删改查,代码生成)_第40张图片

2.mapper文件添加方法

3.测试

Springboot整合MybatisPlus(增删改查,代码生成)_第41张图片

自定义sql(xml) + 分页查询

1.Test

2.mapper里添加方法,注意 @Param(Constants.WRAPPER)

3.编写xml文件

Springboot整合MybatisPlus(增删改查,代码生成)_第42张图片

4.测试查询

Springboot整合MybatisPlus(增删改查,代码生成)_第43张图片

自定义sql(xml) + 分页查询 + 多表查询(一对多)

SELECT q.id, q.title,u.id uid , u.name from question q, user u
WHERE
q.creator = 220 AND u.id = 220

1.定义个VO类存储查询结果

2.Test

3.mapper里添加方法,注意 @Param(Constants.WRAPPER)

4.xml文件

Springboot整合MybatisPlus(增删改查,代码生成)_第44张图片

5.测试

插入

删除

Springboot整合MybatisPlus(增删改查,代码生成)_第45张图片

修改

自动生成

根据数据表自动生成实体类、Mapper,Service,ServiceImpl,Controller(比mybatis逆向工程强大?)

1、pom文件导入Mybatis Plus Generator和velocity(根据velocity模板生成,还有freemarker、Beetl)


com.baomidou
mybatis-plus-generator
3.4.0


org.apache.velocity
velocity
1.7

Springboot整合MybatisPlus(增删改查,代码生成)_第46张图片

2、启动类

Springboot整合MybatisPlus(增删改查,代码生成)_第47张图片

package com.example.demo;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class Main {
public static void main(String[] args) {
//创建generator对象
AutoGenerator autoGenerator =new AutoGenerator();
//数据源
DataSourceConfig dataSourceConfig =new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/wlbnew?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("root");
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
autoGenerator.setDataSource(dataSourceConfig);
//全局配置
GlobalConfig globalConfig =new GlobalConfig();
globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
//创建好之后打开文件
globalConfig.setOpen(false);
globalConfig.setAuthor("Jesse");
globalConfig.setServiceName("%sService");
autoGenerator.setGlobalConfig(globalConfig);
//包信息
PackageConfig packageConfig =new PackageConfig();
packageConfig.setParent("com.example.demo");
packageConfig.setModuleName("generator");
packageConfig.setController("controller");
packageConfig.setService("service");
packageConfig.setServiceImpl("service.impl");
packageConfig.setEntity("entity");
packageConfig.setMapper("mapper");
autoGenerator.setPackageInfo(packageConfig);
//配置策略
StrategyConfig strategyConfig =new StrategyConfig();
strategyConfig.setEntityLombokModel(true);
          //开启字段驼峰命名
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
autoGenerator.setStrategy(strategyConfig);
autoGenerator.execute();
}   }

运行main方法生成。

Springboot整合MybatisPlus(增删改查,代码生成)_第48张图片

最后别忘记在DemoApplication添加MapperScan("com.example.demo.generator.mapper")扫描mapper,根据实际包名修改。

如果没有开启驼峰命名,再加

strategyConfig.setNaming(NamingStrategy.underline_to_camel);

这种生成方式会在Service名前加字母"I",如果想去掉,全局配置加:

globalConfig.setServiceName("%sService");

测试:
1、controller添加一个方法

Springboot整合MybatisPlus(增删改查,代码生成)_第49张图片

2、application.yml配置thymeleaf

Springboot整合MybatisPlus(增删改查,代码生成)_第50张图片

3、templates下新建一个index.html

按条件查询

Springboot整合MybatisPlus(增删改查,代码生成)_第51张图片
Springboot整合MybatisPlus(增删改查,代码生成)_第52张图片

你可能感兴趣的:(Springboot整合MybatisPlus(增删改查,代码生成))