【Mybatis-Plus】Mybatis-Plus代码生成器(二)

H__D / 2024-01-19 / 原文

一、使用

  1、准备一个数据库,本例使用的是mysql数据库,建一张员工表(employee),并且插入一条数据,sql如下:

 1 CREATE TABLE `employee` (
 2     `id` BIGINT ( 20 ) NOT NULL COMMENT '主键ID',
 3     `last_name` VARCHAR ( 30 ) DEFAULT NULL COMMENT '姓名',
 4     `age` INT ( 11 ) DEFAULT NULL COMMENT '年龄',
 5     `email` VARCHAR ( 50 ) DEFAULT NULL COMMENT '邮箱',
 6     PRIMARY KEY ( `id` ) 
 7 ) ENGINE = INNODB DEFAULT CHARSET = utf8;
 8 
 9 
10 INSERT INTO employee ( id, last_name, age, email )
11 VALUES
12     ( 1, 'Jone', 18, 'test1@baomidou.com' ),
13     ( 2, 'Jack', 20, 'test2@baomidou.com' ),
14     ( 3, 'Tom', 28, 'test3@baomidou.com' ),
15     ( 4, 'Sandy', 21, 'test4@baomidou.com' ),
16     ( 5, 'Billie', 24, 'test5@baomidou.com' );

  2、新建一个SpringBoot工程,引入mybatis-plus依赖以及连接mysql数据库依赖

 1 <!-- mybatis-plus-generator,逆向生成代码 -->
 2 <dependency>
 3     <groupId>com.baomidou</groupId>
 4     <artifactId>mybatis-plus-generator</artifactId>
 5     <version>3.5.2</version>
 6 </dependency>
 7 <!-- SpringBoot中包含freemarker,逆向生成代码模板 -->
 8 <dependency>
 9     <groupId>org.freemarker</groupId>
10     <artifactId>freemarker</artifactId>
11 </dependency>
12 <!-- mysql -->
13 <dependency>
14     <groupId>mysql</groupId>
15     <artifactId>mysql-connector-java</artifactId>
16 </dependency>

  3、测试类

 1 package com.test.mybatisplus;
 2 
 3 import com.baomidou.mybatisplus.generator.FastAutoGenerator;
 4 import com.baomidou.mybatisplus.generator.config.OutputFile;
 5 import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
 6 import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
 7 
 8 import java.sql.Types;
 9 import java.util.Collections;
10 
11 public class FastAutoGeneratorTest {
12 
13     public static void main(String[] args) {
14         FastAutoGenerator
15                 .create("jdbc:mysql://1270.0.1:3306/test_mybatis_plus?allowPublicKeyRetrieval=true&useSSL=false",
16                         "root", "123456")
17                 .globalConfig(builder -> {
18                     builder.author("hd") // 设置作者
19 //                            .enableSwagger() // 开启 swagger 模式
20                             .fileOverride() // 覆盖已生成文件
21                             .outputDir("C:\\Users\\H__D\\Desktop"); // 指定输出目录
22                 })
23 
24                 .packageConfig(builder -> {
25                     builder.parent("com.test.mybatisplus") // 设置父包名
26                             .moduleName("test") // 设置父包模块名
27                             .pathInfo(Collections.singletonMap(OutputFile.xml, "C:\\Users\\H__D\\Desktop")); // 设置mapperXml生成路径
28                 })
29                 .strategyConfig(builder -> {
30                     builder.addInclude("employee") // 设置需要生成的表名
31                             .addTablePrefix("t_", "c_"); // 设置过滤表前缀
32                 })
33                 .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
34                 .execute();
35 
36         return;
37 
38     }
39 }

二、运行测试

  1、运行效果如下:

00:01:56.128 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator - ==========================准备生成文件...==========================
00:01:56.503 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 执行SQL:show table status WHERE 1=1 AND NAME IN ('employee')
00:01:56.550 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 返回记录数:1,耗时(ms):35
00:01:56.581 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 执行SQL:show full fields from `employee`
00:01:56.597 [main] DEBUG com.baomidou.mybatisplus.generator.config.querys.MySqlQuery - 返回记录数:6,耗时(ms):23
00:01:56.757 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator - ==========================文件生成完成!!!==========================

  2、生成EmployeeController 

 1 package com.test.mybatisplus.test.controller;
 2 
 3 import org.springframework.web.bind.annotation.RequestMapping;
 4 import org.springframework.stereotype.Controller;
 5 
 6 /**
 7  * <p>
 8  *  前端控制器
 9  * </p>
10  *
11  * @author hd
12  * @since 2024-01-19
13  */
14 @Controller
15 @RequestMapping("/test/employee")
16 public class EmployeeController {
17 
18 }
19 
20 
21 <!-- mybatis-plus-generator,逆向生成代码 -->
22 <dependency>
23     <groupId>com.baomidou</groupId>
24     <artifactId>mybatis-plus-generator</artifactId>
25     <version>3.5.2</version>
26 </dependency>
27 <!-- SpringBoot中包含freemarker,逆向生成代码模板 -->
28 <dependency>
29     <groupId>org.freemarker</groupId>
30     <artifactId>freemarker</artifactId>
31 </dependency>
32 <!-- mysql -->
33 <dependency>
34     <groupId>mysql</groupId>
35     <artifactId>mysql-connector-java</artifactId>
36 </dependency>

  3、生成 IEmployeeService

 1 package com.test.mybatisplus.test.service;
 2 
 3 import com.test.mybatisplus.test.entity.Employee;
 4 import com.baomidou.mybatisplus.extension.service.IService;
 5 
 6 /**
 7  * <p>
 8  *  服务类
 9  * </p>
10  *
11  * @author hd
12  * @since 2024-01-19
13  */
14 public interface IEmployeeService extends IService<Employee> {
15 
16 }

  4、生成 EmployeeServiceImpl 

 1 package com.test.mybatisplus.test.service.impl;
 2 
 3 import com.test.mybatisplus.test.entity.Employee;
 4 import com.test.mybatisplus.test.mapper.EmployeeMapper;
 5 import com.test.mybatisplus.test.service.IEmployeeService;
 6 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 7 import org.springframework.stereotype.Service;
 8 
 9 /**
10  * <p>
11  *  服务实现类
12  * </p>
13  *
14  * @author hd
15  * @since 2024-01-19
16  */
17 @Service
18 public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements IEmployeeService {
19 
20 }

  5、生成 EmployeeMapper

 1 package com.test.mybatisplus.test.mapper;
 2 
 3 import com.test.mybatisplus.test.entity.Employee;
 4 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 5 
 6 /**
 7  * <p>
 8  *  Mapper 接口
 9  * </p>
10  *
11  * @author hd
12  * @since 2024-01-19
13  */
14 public interface EmployeeMapper extends BaseMapper<Employee> {
15 
16 }

  6、生成  Employee 

 1 package com.test.mybatisplus.test.entity;
 2 
 3 import com.baomidou.mybatisplus.annotation.IdType;
 4 import com.baomidou.mybatisplus.annotation.TableId;
 5 import java.io.Serializable;
 6 
 7 /**
 8  * <p>
 9  * 
10  * </p>
11  *
12  * @author hd
13  * @since 2024-01-19
14  */
15 public class Employee implements Serializable {
16 
17     private static final long serialVersionUID = 1L;
18 
19     @TableId(value = "id", type = IdType.AUTO)
20     private Long id;
21 
22     private String lastName;
23 
24     private Integer age;
25 
26     private String email;
27 
28 
29     public Long getId() {
30         return id;
31     }
32 
33     public void setId(Long id) {
34         this.id = id;
35     }
36     
37     public String getLastName() {
38         return lastName;
39     }
40 
41     public void setLastName(String lastName) {
42         this.lastName = lastName;
43     }
44 
45     public Integer getAge() {
46         return age;
47     }
48 
49     public void setAge(Integer age) {
50         this.age = age;
51     }
52 
53     public String getEmail() {
54         return email;
55     }
56 
57     public void setEmail(String email) {
58         this.email = email;
59     }
60 
61     @Override
62     public String toString() {
63         return "Employee{" +
64             "id=" + id +
65             ", lastName=" + lastName +
66             ", age=" + age +
67             ", email=" + email +
68         "}";
69     }
70 }

  7、生成 XML 

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="com.test.mybatisplus.system.mapper.EmployeeMapper">
4 
5 </mapper>