SpringBoot中整合MyBatis-Plus的方法示例

yizhihongxing

Sure,下面是SpringBoot整合MyBatis-Plus的方法示例完整攻略:

一、前置准备

  • JDK 1.8+
  • Maven 3.0+
  • SpringBoot 2.0+
  • MyBatis-Plus 3.1.0+

二、项目搭建

1. 创建SpringBoot项目

通过 Spring Initializer,创建一个 SpringBoot 项目,并导入 Maven 依赖:

<!-- SpringBoot依赖 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- MyBatis-Plus依赖 -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.1.0</version>
</dependency>

2. 配置数据库连接

application.properties 文件中添加如下内容:

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

3. 创建实体类

src/main/java 下创建实体类 User

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

4. 创建Mapper接口

src/main/java 下创建 Mapper 接口 UserMapper

@Repository
public interface UserMapper extends BaseMapper<User> {
}

注意:Mapper 接口继承 BaseMapper 接口。

三、基本操作

1. 开启Mapper接口自动扫描

在启动类上加上注解 @MapperScan("com.example.mybatis.mapper")

2. CRUD操作示例

(1) 新增

@SpringBootTest
class UserMapperTest {
    @Autowired
    private UserMapper userMapper;
    private static Logger logger = LoggerFactory.getLogger(UserMapperTest.class);
    @Test
    void addUser() {
        User user = new User();
        user.setName("张三");
        user.setAge(18);
        user.setEmail("zhangsan@leetcode.com");
        int i = userMapper.insert(user);
        logger.info("受影响的行数:" + i);
    }
}

(2) 修改

@SpringBootTest
class UserMapperTest {
    @Autowired
    private UserMapper userMapper;
    private static Logger logger = LoggerFactory.getLogger(UserMapperTest.class);
    @Test
    void updateUserById() {
        User user = new User();
        user.setId(1L);
        user.setName("李四");
        int i = userMapper.updateById(user);
        logger.info("更新的行数:" + i);
    }
}

(3) 查询

@SpringBootTest
class UserMapperTest1 {
    @Autowired
    private UserMapper userMapper;
    private static Logger logger = LoggerFactory.getLogger(UserMapperTest1.class);

    @Test
    void selectList() {
        List<User> users = userMapper.selectList(null);
        users.forEach(user -> {
            logger.info(user.toString());
        });
    }
}

3. 代码生成器

MyBatis-Plus 提供了一个高效的代码生成器,方便快捷的生成基本的 CRUD 操作所需的实体类、Mapper 接口、XML 映射文件等。

(1) 配置

application.properties 文件中添加如下配置:

# 代码生成器配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 代码生成器配置
mybatis-plus.global-config.db-config.table-prefix=t_
mybatis-plus.mapper-locations=classpath:./mapper/*Mapper.xml
mybatis-plus.global-config.id-type=auto

(2) 生成代码

创建 CodeGenerator 类,并在 main 方法中执行:

public class CodeGenerator {
    public static void main(String[] args) {
        // 代码生成器配置
        AutoGenerator mpg = new AutoGenerator();
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("lijun");
        gc.setOpen(false);
        // gc.setSwagger2(true); 实体属性 Swagger2 注解
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
        mpg.setDataSource(dsc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.example.mybatis");
        mpg.setPackageInfo(pc);

        // 自定义配置,XML中的BaseResultMap、Base_Column_List都不配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };

        // 如果模板引擎是 freemarker
        String templatePath = "/templates/mapper.xml.ftl";
        // 如果模板引擎是 velocity
        // String templatePath = "/templates/mapper.xml.vm";

        // 自定义输出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定义配置会被优先输出xml文件 默认mapper.xml文件不生成
        focList.add(new FileOutConfig(templatePath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名,如果Entity设置了前后缀、xml的名称会跟着发生变化
                return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);

        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();

        // 配置自定义输出模板
        // 模板引擎是 freemarker
        // templateConfig.setXml(null);
        // 模板引擎是 velocity
        // templateConfig.setMapper("/templates/mapper.xml.vm");
        //templateConfig.setService("/templates/service.java.vm");
        //templateConfig.setServiceImpl("/templates/serviceImpl.java.vm");
        //templateConfig.setController("/templates/controller.java.vm");

        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        // strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);

        mpg.setStrategy(strategy);
        mpg.execute();
    }
}

执行完后,会在当前项目的资源目录下自动生成实体类、Mapper接口和映射文件。

四、结束语

以上就是SpringBoot整合MyBatis-Plus的完整攻略,其中包含了基本操作和代码生成器的使用。对于初次接触MyBatis-Plus的小伙伴们,建议先了解基本操作,在熟悉后再使用代码生成器提高工作效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot中整合MyBatis-Plus的方法示例 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Apache Log4j2 报核弹级漏洞快速修复方法

    下面是Apache Log4j2报核弹级漏洞快速修复方法的详细攻略: 概述 Apache Log4j2是一个广泛使用的Java日志框架,近日被爆出一个核弹级的漏洞CVE-2021-44228。攻击者在网络上可以通过构造Payload,远程执行任意代码,进行拦截、篡改和窃取敏感信息等攻击。此次漏洞严重性极高,Apache官方已经发布了修复方案,建议尽快进行修复…

    Java 2023年5月19日
    00
  • 一文带你认识java中的String类

    String类在Java中是一个非常重要的类,它用来表示字符串,下面就一文带你认识Java中的String类。 1. String类的概述 在Java中,字符串是一个非常常见的数据类型。而String类则是Java提供的处理字符串的主要类。String类是不可变的,也就是说一旦创建了一个String对象,便不能再进行修改。每进行一次字符串的操作,都会创建一个…

    Java 2023年5月26日
    00
  • 浅谈Java模板引擎性能对比

    浅谈Java模板引擎性能对比 简介 本文主要讨论Java模板引擎的性能对比,介绍常见的Java模板引擎及其性能特点,并通过两个示例来说明不同模板引擎的使用方式与性能表现。 常见Java模板引擎 常见的Java模板引擎有JSP、FreeMarker、Thymeleaf、Velocity等,这些引擎的性能特点各不相同。 JSP:JSP作为Java Web技术的重…

    Java 2023年6月16日
    00
  • IDEA实现 springmvc的简单注册登录功能的示例代码

    以下是“IDEA实现 springmvc的简单注册登录功能的示例代码”的完整攻略: 创建 Maven Web 项目 首先,在 IDEA 中创建一个 Maven Web 项目,选择 Spring MVC。 配置 pom.xml 文件 在 pom.xml 文件中添加 Spring 相关的依赖,包括 spring-webmvc、spring-orm、spring-…

    Java 2023年5月16日
    00
  • SPRING BOOT启动命令参数及源码详析

    SPRING BOOT启动命令参数及源码详析 Spring Boot是一个快速开发框架,它提供了许多方便的启动命令参数,可以满足不同的需求。本文将介绍和分析Spring Boot的启动命令参数和源码,帮助读者更加深入地理解Spring Boot的运行机制。 启动命令参数 通用参数 –debug:启用Debug模式,输出额外的调试信息。 –trace:启用…

    Java 2023年5月19日
    00
  • jquery之ajaxfileupload异步上传插件(附工程代码)

    介绍 jquery-ajaxfileupload是一个基于jQuery的异步上传插件,可用于向服务器上传文件并返回结果,开发者只需要在前端代码中调用该插件的api即可。本文主要介绍该插件的使用方法和示例代码。 安装 首先需要引入jQuery库和jquery-ajaxfileupload插件的JS文件和样式文件,可以使用CDN或直接下载本插件的JS和CSS文件…

    Java 2023年5月20日
    00
  • MyBatis插件机制超详细讲解

    MyBatis插件机制超详细讲解 什么是MyBatis插件机制 MyBatis插件机制指的是MyBatis框架提供了一种扩展机制,可以在执行SQL语句的各个环节进行拦截,并在拦截到这些环节时进行自定义的操作,以实现更自定义的功能,例如SQL日志拦截、自定义SQL追踪、自定义SQL执行等。 插件机制最主要的功能是拦截方法并执行自定义操作。 MyBatis插件机…

    Java 2023年5月19日
    00
  • jsp中session过期设置及web.xml配置学习

    下面是关于“jsp中session过期设置及web.xml配置学习”的完整攻略: 1. session过期设置 1.1 什么是session过期? 在jsp开发中,session在很多场合都扮演了非常重要的角色,他可以用来存储用户的登录状态、用户浏览过的历史页面、用户购物车等等。但是,session也会因为一些原因来使其“死亡”,也就是所谓的过期失效。 1.…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部