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

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日

相关文章

  • Netty结合Protobuf进行编解码的方法

    Netty结合Protobuf进行编解码的方法可以分为以下步骤: 添加依赖 为了使用Netty结合Protobuf进行编解码,需要添加以下两个依赖到项目的构建文件中: <!– 定义 protobuf 插件 –> <plugin> <groupId>org.xolstice.maven.plugins</group…

    Java 2023年5月20日
    00
  • 什么是Java编程风格?

    Java编程风格是一种规范,用来规定编写Java代码的格式、命名、注释等等各个方面。遵循Java编程风格可以提高代码的可读性和可维护性,从而保证代码的质量和可靠性。 下面是Java编程风格的使用攻略: 1. 格式要求 1.1缩进 缩进是指代码在块级别内的缩进符号。Java编程风格一般使用四个空格作为缩进,而不是使用制表符或两个空格。例如: if (condi…

    Java 2023年5月11日
    00
  • Spring Data Jpa 中原生查询 REGEXP 的使用详解

    Spring Data JPA 中原生查询 REGEXP 的使用详解 在使用 Spring Data JPA 进行数据持久化时,有时需要使用原生 SQL 进行查询,而在查询过程中常常需要使用正则表达式来匹配数据。Spring Data JPA 提供了对正则表达式的支持,本文将详细讲解如何在 Spring Data JPA 中使用原生查询 REGEXP。 正则…

    Java 2023年5月20日
    00
  • 详解Java编译优化之循环展开和粗化锁

    详解Java编译优化之循环展开和粗化锁 在Java程序的运行过程中,编译器可以通过一些技术来对代码进行优化,以提高程序的效率。其中,循环展开和粗化锁是两种常见的编译优化技术。 循环展开 循环展开是指将循环语句中的代码直接复制到循环外执行,以减少循环的迭代次数,从而提高程序的效率。循环展开可以减少循环控制器的操作,减少循环的开销,并可以利用指令级并行性。但是,…

    Java 2023年5月26日
    00
  • RHEL5 Apache+Tomcat整合,同时支持jsp与php

    RHEL5 Apache+Tomcat整合,同时支持jsp与php 在Linux系统中,我们常常需要将Apache和Tomcat进行整合,同时支持jsp和php的运行。本文将提供一份完整的攻略来实现这一目的。以下是整合的具体步骤: 步骤一:配置Apache的mod_jk模块 首先,我们需要在Linux系统中安装Apache及其模块。使用yum工具即可完成,详…

    Java 2023年5月19日
    00
  • 微信小程序填写用户头像和昵称实现方法浅析

    微信小程序填写用户头像和昵称实现方法浅析 在开发微信小程序时,需要获取用户信息,其中包括用户头像和昵称。下面将介绍如何实现微信小程序中用户头像和昵称的获取。 获取用户信息的基本步骤 获取用户授权:在小程序中使用 wx.getUserInfo 方法获取用户信息前,必须先执行授权。 wx.getUserInfo({ success: function(res) …

    Java 2023年5月23日
    00
  • Spring Boot + Canal 实现数据库实时监控

    下面是“Spring Boot + Canal 实现数据库实时监控”的完整攻略。 1. 简介 Canal 是阿里巴巴开源的一款用于数据库增量日志解析的工具,它基于 MySQL 构建,实现了 MySQL 数据库增量日志的实时采集,并提供了增量日志解析的功能,目前 Canal 的客户端支持 Spring Boot。 本文将介绍如何使用 Spring Boot 和…

    Java 2023年5月20日
    00
  • 2020JDK1.8安装教程详解(一次就可安装成功)

    2020JDK1.8安装教程详解(一次就可安装成功) 简介 JDK(Java Development Kit)是一个软件开发工具包,其中包含了Java语言开发所需的全部组件,包括JRE(Java Runtime Environment)、Java编译器、Java Debugger等。 本教程将详细讲解2020年安装JDK1.8的方法,让你一次性就能成功地安装…

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