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日

相关文章

  • springboot通过注解、接口创建定时任务详解

    让我详细讲解一下关于“springboot通过注解、接口创建定时任务”的完整攻略。 一、创建定时任务需要的依赖 在项目中,需要导入以下依赖: <!– Spring Boot定时器需要的依赖 –> <dependency> <groupId>org.springframework.boot</groupId>…

    Java 2023年5月19日
    00
  • JSP + ajax实现输入框自动补全功能 实例代码

    下面是详细的攻略: 1. 需求分析 我们需要实现一个输入框自动补全的功能,即当用户在输入框中输入文字时,能够实时推荐可能的匹配结果。因此,我们需要使用ajax技术,实现在输入框输入字符时动态加载匹配的数据。 2. 技术栈 JSP:Java服务器页面,用于生成动态网页; ajax:用于异步加载数据,对局部网页内容进行更新; 3. 实现步骤 3.1 创建JSP页…

    Java 2023年6月15日
    00
  • SpringBoot整合Swagger框架过程解析

    下面为您详细讲解“SpringBoot整合Swagger框架过程解析”的完整攻略。 什么是Swagger? Swagger是一个开源框架,旨在简化 RESTful Web 服务的开发和文档化,它可以生成能描述API的 JSON、HTML等文档。它包含了一些工具,可以帮助开发人员设计、构建、文档化和使用 RESTful Web 服务。 SpringBoot整合…

    Java 2023年5月19日
    00
  • springboot实现string转json json里面带数组

    下面我将为您详细介绍如何在Spring Boot中实现将字符串转换成JSON,并且JSON中还带有数组的完整攻略。 1. 前置条件 在整个过程中,我们需要使用到Jackson这个Java类库来实现JSON的转换。因此,在进行以下操作前,请确保在项目的依赖中已经引入了jackson-databind这个包。 在pom.xml文件中添加以下依赖即可: <d…

    Java 2023年5月26日
    00
  • SpringBoot 日志的配置及输出应用教程

    SpringBoot 日志的配置及输出应用教程 介绍 在开发过程中,日志是非常重要的。它可以帮助开发者了解应用程序中的每个步骤,并且帮助解决问题。Spring Boot 提供了多种日志框架,如 Logback、Log4j2、Java Util Logging 和 Commons Logging 等。这篇教程将详细介绍 SpringBoot 日志的配置及输出应…

    Java 2023年5月26日
    00
  • Java基于递归解决全排列问题算法示例

    Java基于递归解决全排列问题的算法是比较经典的算法问题,通过递归实现,可以快速地求解全排列问题,下面将详细介绍基于递归解决全排列问题的算法示例。 什么是全排列 全排列就是将一组数按照一定顺序排列,即所有的数字都被使用了,仅次序不同,就认为是一种不同的排列方式。例如,对于数字1,2,3的全排列,可以得到如下6种排列方式: 1 2 3 1 3 2 2 1 3 …

    Java 2023年5月19日
    00
  • 如何用好Java枚举让你的工作效率飞起来

    如何用好Java枚举让你的工作效率飞起来 1. 枚举的基本使用 定义枚举类型 Java中的枚举是一种特殊的数据类型,可以将一组有限个数的常量定义为枚举类型,比如一周的星期、一年的季节等常量集合。枚举类型通过enum关键字定义。 public enum Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY…

    Java 2023年5月26日
    00
  • 一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)

    一个Java程序猿眼中的前后端分离以及Vue.js入门 前后端分离 前后端分离是指将前端和后端的开发、部署等过程分离开,前端和后端通过接口通信,互相独立开发、测试、部署。 优势 前后端分离的优势主要有: 前端和后端的开发可以并行进行,加快开发速度; 可以使用不同的技术栈,提高开发效率; 可以更好地实现前后端分工,提高开发效率; 更容易进行维护,修改、升级等。…

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