# mybatis-plus代码生成器使用

提示

本章节主要讲解mybatis-plus代码生成器的使用,快速生成controller,service,dao等相关代码。@123

# 代码生成器

我这里采用的是MP3.5.4,如果有兼容问题,请留言告知具体版本,我这边会更新兼容的代码


# 依赖导入

要使用代码生成,请导入以下包,完整包请见springboot融合mybatis-plus的环境配置

    implementation "com.baomidou:mybatis-plus-generator:3.5.4"
    implementation 'org.apache.velocity:velocity-engine-core:2.0'
1
2

# 代码

AbstractBaseGeneration主要配置一些变量参数,CodeGeneration的Main是启动类

package com.cas.generator;

/**
 * @description:
 * @author: xianglong
 * @create: 2024-02-29 10:02
 **/
public abstract class AbstractBaseGeneration {

    public static class DBconfig {
        protected static final String DATABASE = "cas";
        protected static final String URL = "jdbc:mysql://localhost:3306/" + DATABASE + "?&useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
        protected static final String TABLE_NAME = "user";
        protected static final String USERNAME = "root";
        protected static final String PASSWORD = "12345678";
    }

    public static class UserConfig {
        protected static final String AUTHOR = "xianglong";
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.cas.generator;
 
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 
import java.util.Collections;

import static com.cas.generator.AbstractBaseGeneration.DBconfig.PASSWORD;
import static com.cas.generator.AbstractBaseGeneration.DBconfig.TABLE_NAME;
import static com.cas.generator.AbstractBaseGeneration.DBconfig.URL;
import static com.cas.generator.AbstractBaseGeneration.DBconfig.USERNAME;
import static com.cas.generator.AbstractBaseGeneration.UserConfig.AUTHOR;

public class CodeGeneration extends AbstractBaseGeneration {

    public static void main(String[] args) {
        Generation();
    }

    /**
     * 根据表名生成相应结构代码
     */
    public static void Generation(){
        FastAutoGenerator.create(URL,USERNAME,PASSWORD)
                .globalConfig(builder -> builder.author(AUTHOR)
                        //启用swagger
                        .enableSwagger()
                        //指定输出目录
                        .outputDir(System.getProperty("user.dir")+"/src/main/java"))
                .packageConfig(builder -> builder.entity("entity")//实体类包名
                        .parent("com.cas")//父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名
                        .controller("controller")//控制层包名
                        .mapper("dao")//mapper层包名
                        //.other("dto")//生成dto目录 可不用
                        .service("service")//service层包名
                        .serviceImpl("service.impl")//service实现类包名
                        //自定义mapper.xml文件输出目录
                        .pathInfo(Collections.singletonMap(OutputFile.xml,System.getProperty("user.dir")+"/src/main/resources/mapper")))
                .strategyConfig(builder -> {
                    //设置要生成的表名
                    builder.addInclude(TABLE_NAME)
                            //.addTablePrefix("sys_")//设置表前缀过滤
                            .entityBuilder()
                            .enableLombok()
                            .enableChainModel()
                            .naming(NamingStrategy.underline_to_camel)//数据表映射实体命名策略:默认下划线转驼峰underline_to_camel
                            .columnNaming(NamingStrategy.underline_to_camel)//表字段映射实体属性命名规则:默认null,不指定按照naming执行
                            .idType(IdType.AUTO)//添加全局主键类型
                            .formatFileName("%s")//格式化实体名称,%s取消首字母I,
                            .mapperBuilder()
                            .enableMapperAnnotation()//开启mapper注解
                            .enableBaseResultMap()//启用xml文件中的BaseResultMap 生成
                            .enableBaseColumnList()//启用xml文件中的BaseColumnList
                            .formatMapperFileName("%sMapper")//格式化Dao类名称
                            .formatXmlFileName("%sMapper")//格式化xml文件名称
                            .serviceBuilder()
                            .formatServiceFileName("%sService")//格式化 service 接口文件名称
                            .formatServiceImplFileName("%sServiceImpl")//格式化 service 接口文件名称
                            .controllerBuilder()
                            .enableRestStyle();
                })
           .execute();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

# 效果

运行上面的方法,会自动创建controller,dao,entity,service,resources/mapper层 img.png

# 总结

针对大部分项目,都可以通过自动生成简化代码,上40分钟敲5分钟不是梦。当然有些报表,多表查询还是需要在mapper.xml中来实现

# 参考

Last Updated: 3/1/2024, 10:06:26 AM