首页 > 其他分享 >Spring Boot —— 集成 MyBatis-Plus

Spring Boot —— 集成 MyBatis-Plus

时间:2024-05-20 15:43:28浏览次数:26  
标签:String Spring Boot Plus plus import com public scanner

项目基于 Spring Boot 3.2.5

Pom

需要注意的是,引用 Mybatis-Plus 依赖,无需手动引入 Mybatis

<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.4.0</version>
</dependency>

<!-- mybatis-plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.6</version>
</dependency>

<!-- mybatis-plus-generator -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.6</version>
</dependency>

<!-- mybatis-plus 自动生成时使用的模板-->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.3</version>
</dependency>

application.yml

spring:
  profiles:
    active: develop

application-develop.yml

mybatis-plus:
  # mybatis xml 文件的保存路径,classpath 表示 java 或 resources 目录,因此当前设置表示 resources/mapper/任意子目录/*Mapper.xml 文件都会被扫描
  mapper-locations: classpath:mapper/**/*Mapper.xml
  # 表示实体对象所在的命名空间
  type-aliases-package: com.cash216.mango.*.entity
  # mybatis-plus 配置文件,可选
  # config-location: classpath: config/MyBatisConfig.xml
  configuration:
    # 日志输出方式
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      # 逻辑删除配置
      logic-delete-value: 1
      logic-not-delete-value: 0
      logic-delete-field: del_flag

自动生成Service、Model(Entity)、Mapper

引入mybatis-plus-generator可用于基于数据库自动生成各层文件,基本步骤如下:

  • 引入依赖
  • 配置数据连接
  • 编写自动生成运行代码
  • 完善自动生成文件业务逻辑

引入依赖

在 pom 节已列举,不再重复

配置数据连接

application-develop.yml为例

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.driver
	url: jdcb:mysql://127.0.0.1:3306/{database}?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true
	username: root
	password: 123456

实际这一步不影响自动生成,因为在编写自动生成运行代码时还需要设置

编写自动生成文件的运行代码

新建java文件如CodeGenerator.java,编写代码如下:

package com.cash216.mangoAdmin.codegenerator;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class CodeGenerator {

    private static final String databaseUrl = "jdbc:mysql://127.0.0.1:3306/{database}?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true";
    private static final String databaseUser = "root";
    private static final String databasePassword = "123456";

    public static String scanner(String tip){
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append("请输入").append(tip).append(":");
        System.out.println(help.toString());
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (ipt != null && !ipt.isEmpty()) {
                return ipt;
            }
        }
        throw new MybatisPlusException(STR."请输入正确的\{tip}");
    }

    public static void main(String[] args){
		// 本例使用 Mybatis-plus 交互式生成方式,会询问作者、包名、表名后自动生成各层目录及文件
        FastAutoGenerator.create(databaseUrl, databaseUser, databasePassword)
                .globalConfig((scanner, builder)->
                        builder.author(scanner.apply("请输入作者名称"))
                                .commentDate("yyyy-MM-dd")
                                .outputDir(System.getProperty("user.dir") + "/src/main/java"))
                .packageConfig((scanner, builder)-> builder.parent(scanner.apply("请输入包名")))
                .strategyConfig((scanner, builder)-> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔,所有输入 all")))
                        .entityBuilder()
                        .enableLombok()
                        .addTableFills(new Column("create_time", FieldFill.INSERT))
                        .build())
                .execute();
    }

    protected static List<String> getTables(String tables){
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }
}

运行main方法,在控制台会以交互方式询问作者、包名、表名后生成文件,生成后的效果如图
image
image
image
本来*Mapper.xml文件是生成在mapper/xml目录下的,在本例中是后移动到resources/mapper/system

使用

不知道是本来就这样还是我使用有问题,生成的所有文件,除了实体对象外,其他文件里边都是空的

Mybatis-plus 自带一些通用接口方法,可直接调用,比如根据Id查询记录

public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
	@Override
	public SysUser findById(Long id){
		return baseMapper.selectById(id);
	}
}

Mybatis-plus 没有的方法需自行添加实现,需要添加Mapper.xml、Mapper接口文件、IService、ServiceImpl、Controller,在这里只列出ServiceImpl中的代码为例

public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
	@Override
	public SysUser findById(Long id){
		return baseMapper.selectById(id);
	}
	
	@Override
	public SysUser findByName(String name){
		return baseMapper.selectOne(new QueryWrapper<SysUser>().eq("name", name));
	}
}

标签:String,Spring,Boot,Plus,plus,import,com,public,scanner
From: https://www.cnblogs.com/cinlap/p/18202071

相关文章

  • Springboot Data Jdbc实体类json格式存储
    日常需求中有些需求需要在某字段存储json格式数据,例如日志审计接口传参数据等1.首先我们得保证数据库字段为text或者json2.设置读转换和写转换器importcom.fasterxml.jackson.databind.ObjectMapper;importorg.springframework.core.convert.converter.Converter;importo......
  • Spring是如何整合MyBatis将Mapper接口注册为Bean的原理
    一、接口生成bean定义1.首先MyBatis的Mapper接口核心是JDK动态代理2.Spring会排除接口,无法注册到IOC容器中3.MyBatis实现了BeanDefinitionRegistryPostProcessor可以动态注册BeanDefinition4.需要自定义扫描器(继承Spring内部扫描器ClassPathBeanDefinitionScan......
  • Spring Boot —— 集成 Springdoc
    pom<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>x.x.x</version></dependency><!--Springboot3使用--><!--https://mvnrepository.......
  • oracle sqlplus
    在逻辑结构中,Oracle从大到下,分别是如下的结构:数据库实例->表空间->数据段(表)->区->块。也就是说当我们要使用Oracle作为项目的数据库时,我们需要先创建数据库实例,之后创建表空间,再创建相对应的表(也就是逻辑结构中的数据段)。一、创建数据库实例创建数据库实例一般使用“配......
  • EasyUEFI、Bootice、Bcdedit和EfiVarCLI都是用于管理计算机启动项和UEFI设置的工具,但
    EasyUEFI、Bootice、Bcdedit和EfiVarCLI都是用于管理计算机启动项和UEFI设置的工具,但它们在功能和用途上有一些区别:EasyUEFI:EasyUEFI是一个用户友好的图形界面工具,主要用于管理UEFI引导项,在Windows操作系统下操作更加方便。EasyUEFI提供了添加、删除、编辑UEFI引导项的......
  • springBoot统一异常处理
    一、概述:  1.1.Spring在3.2版本增加了一个注解@ControllerAdvice,可以与@ExceptionHandler、@InitBinder、@ModelAttribute 等注解注解配套使用。简单的说,该注解可以把异常处理器应用到所有控制器,而不是单个控制器。借助该注解,我们可以实现:在独立的某个地方,比如单独一个类,定......
  • springboot配置热部署
    ​ springboot配置热部署在SpringBoot中配置热部署通常涉及到使用SpringBootDevTools依赖和配置应用服务器的热部署特性。以下是一个基本的配置步骤:一.pom.xml:在pom.xml中添加SpringBootDevTools依赖:<dependencies><!--其他依赖--><dependency>......
  • 46.Spring(AOP)学习整理
    SpringAOP面向切面编程它依旧是一种设计思想本质还是为了松散耦合先去分一个概念OOP面向对象编程实体及其属性行为AOP面向切面编程某个阶段或者步骤看下图解:代码业务的实现都是纵向而AOP切面实现为横向AOP的一些术语:连接点(Jointpoint):表示需要在程序中插入......
  • 基于 Spring Boot3、Vue3!这套小说系统开源了...
    大家好,我是Java陈序员。今天,给大家介绍一个基于SpringBoot3、Vue3前后端分离的小说项目,集成了主流的技术栈,可供学习使用!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍novel——一套基于SpringBoot3+Vue3开发......
  • Spring 对于事务上的应用的详细说明
    1.Spring对于事务上的应用的详细说明@目录1.Spring对于事务上的应用的详细说明每博一文案2.事务概述3.引入事务场景3.1第一步:准备数据库表3.2第二步:创建包结构3.3第三步:准备对应数据库映射的Bean类3.4第四步:编写持久层3.5第五步:编写业务层3.6第六步:编写Spring配置......