SpringBoot整合Mybatis-Plus

MybatisPlus简介

Mybatis-Plus(简称MP)是一个Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发、提高效率而生。

以上介绍摘取自Mybatis-Plus官网,如果你已经掌握了Mybatis的基本用法,那么使用MP可以使开发过程更加丝滑,本文将对SpringBoot项目集成Mybatis-Plus进行介绍

注意:本文基于最新的3.5.2版本进行介绍,与2.x版本在使用上略有区别,详情请参考官网

新建SpringBoot项目并引入依赖

<!--以下为核心依赖-->
<!--Mybatis-Plus-->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.5.2</version>
</dependency>
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-generator</artifactId>
  <version>3.5.2</version>
</dependency>
<!--velocity模板引擎,生成代码-->
<dependency>
  <groupId>org.apache.velocity</groupId>
  <artifactId>velocity-engine-core</artifactId>
  <version>2.0</version>
</dependency>
<!--Api文档-->
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.9.2</version>
</dependency>

完善配置文件application.yml

server:
  port: 8080
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    # 使用默认的Hikari数据源
    type: com.zaxxer.hikari.HikariDataSource

# 配置Mybatis-Plus
mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: isDeleted # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
  mapper-locations: classpath*:/mapper/*Mapper.xml

在测试项目中新建CodeGenerator

在这里插入图片描述

package com.springbootdemo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;

import java.util.Collections;

public class CodeGenerator {
    private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig
            .Builder("jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai",
            "root", "123456");

    /**
     * 执行 run
     */
    public static void main(String[] args) {
    	// 文件输出路径要使用绝对路径,否则可能会出错!
        FastAutoGenerator.create(DATA_SOURCE_CONFIG)
                .globalConfig(builder -> {
                    builder.author("wzc") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("/Users/wuzhaochen/IdeaProjects/springboot-demo/src/main/java/"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.springbootdemo") // 设置父包名
                            .pathInfo(Collections.singletonMap(OutputFile.xml,
                                    "/Users/wuzhaochen/IdeaProjects/springboot-demo/src/main/java/")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("t_user") // 设置需要生成的表名,多个表用,隔开
                            .addTablePrefix("t_") // 设置过滤表前缀
                            .controllerBuilder().enableRestStyle().enableHyphenStyle()
                            .serviceBuilder().formatServiceFileName("%sService")
                            .entityBuilder().idType(IdType.ASSIGN_ID).enableLombok()  // 使用雪花算法生成全局唯一ID,开启Lombok简化getter,setter
                            .logicDeleteColumnName("is_deleted") // 数据表对应逻辑删除的字段
                            .logicDeletePropertyName("deleted"); // 实体类对应逻辑删除的属性
                })
                .execute();
    }
}

运行之后神奇的事情发生了:从DAO层到service层到controller层,包括实体类entity全部自动生成
在这里插入图片描述

在SpringBoot项目启动类处加上包扫描注解@MapperScan

package com.springbootdemo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.springbootdemo.mapper")
public class SpringbootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemoApplication.class, args);
    }
}

至此,Mybatis-Plus的基本配置就完成了,接下来使用MP完成基础增删改查操作

package com.springbootdemo;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.springbootdemo.entity.User;
import com.springbootdemo.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;


@SpringBootTest
public class MybatisPlusTest {
    @Autowired
    private UserService userService;

    @Test
    public void addRecord() {
        // 使用雪花算法自动生成ID,所以此处ID可以为空
        User user = new User(null, "小明", "111111", "1234@qq.com", 0);
        userService.save(user);
    }

    @Test
    public void updateRecord() {
        // QueryWrapper为条件构造器,根据指定条件搜索记录
        User user = userService.getOne(new QueryWrapper<User>().eq("username", "小明"));
        user.setPassword("222222");
        userService.updateById(user);
    }

    @Test
    public void deleteRecord() {
        userService.removeById("111111");
    }

    @Test
    public void countRecord() {
        System.out.println("User表的总记录数为:" + userService.count());
    }
}

小结

就开发的体验感而言,Mybatis-Plus是本人目前用过的最丝滑的持久层框架了,在它的加持下,开发效率大大提升。但是对于后端的初学者来说,我个人不建议直接上手MP,毕竟写SQL是后端的基本功,建议新手小白多写SQL语句,在有了一定的功底和熟练度之后,再来使用MP

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值