Mybatis-Plus-代码自动生成器

前言

MyBatis-Plus代码生成器能够为我们生成一些代码,帮助我们节省了创建模块的时间。

生成器可以生成 Entity、Mapper、Mapper XML、Service、Controller 模块代码。

操作

1.添加MyBatis-Plus相关依赖

<!--  mybatis plus 代码生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.20</version>
        </dependency>
 <!--配置ApiModel在实体类中不生效-->
        <dependency>
            <groupId>com.spring4all</groupId>
            <artifactId>spring-boot-starter-swagger</artifactId>
            <version>1.5.1.RELEASE</version>
        </dependency>

具体pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.15</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com</groupId>
    <artifactId>Talk-sky</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Talk-sky</name>
    <description>Talk-sky</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--lombok依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.42</version>
            <scope>runtime</scope>
        </dependency>
        <!-- 引入阿里数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>
        <!--  mybatis plus 代码生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.20</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>
        <!-- slf4j 日志输出 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.7</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.7</version>
        </dependency>
        <!--配置ApiModel在实体类中不生效-->
        <dependency>
            <groupId>com.spring4all</groupId>
            <artifactId>spring-boot-starter-swagger</artifactId>
            <version>1.5.1.RELEASE</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

2.生成代码

底下有完整代码

2.1获取当前系统的目录

2.2全局策略配置

2.3数据源配置

2.4策略配置

在数据库中创建tk_user表

2.5包名策略

2.6整合配置

3.完整代码

package com;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.Scanner;

@SpringBootTest
public class testGenerator {
    public static String scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append("请输入" + tip + ":");
        System.out.println(help.toString());
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (StringUtils.isNotEmpty(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }
    @Test
    public void testGenerator() throws Exception {

            //获取当前系统的目录
            String ObjectPath = System.getProperty("user.dir");

            //1.全局策略配置
            GlobalConfig config = new GlobalConfig();
            config.setActiveRecord(true)//是否支持AR模式
                    .setAuthor("Andren")//作者
                    .setOutputDir(ObjectPath + "/src/main/java")//生成路径
                    .setFileOverride(true)//文件覆盖
                    .setIdType(IdType.AUTO)//主键策略
                    .setServiceName("%sService")//设置生成service接口名字的首字母是否为I(默认会生成I开头的IStudentService)
                    .setBaseResultMap(true)//自动SQL映射文件,生成基本的ResultMap
                    .setBaseColumnList(true)//生成基本的SQL片段
                    .setSwagger2(true); //实体属性 Swagger2 注解

            //2.数据源配置
            DataSourceConfig dataSourceConfig = new DataSourceConfig();
            dataSourceConfig.setDbType(DbType.MYSQL)//设置数据库类型
                    .setDriverName("com.mysql.jdbc.Driver")//数据库驱动名
                    .setUrl("jdbc:mysql://localhost:3306/talk_sky?useUnicode=true&characterEncoding=UTF-8")//数据库地址
                    .setUsername("root")//数据库名字
                    .setPassword("123456");//数据库密码

            //自动填充配置
            TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT);
            TableFill gemModified = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE);
            ArrayList<TableFill> tableFills = new ArrayList<>();
            //3.策略配置
            StrategyConfig strategy = new StrategyConfig();
            strategy.setCapitalMode(true)//全局大写命名
                    .setNaming(NamingStrategy.underline_to_camel)//数据库表映射到实体的命名策略
                    .setColumnNaming(NamingStrategy.underline_to_camel)//列的命名也支持驼峰命名规则
                    .setTablePrefix("tk_")//数据库表的前缀
                    .setInclude("tk_user")//设置要映射的表名,这里可以写多个
                    .setEntityLombokModel(true)  //使用Lombok开启注解
                    .setLogicDeleteFieldName("deleted")//设置逻辑删除字段
                    .setTableFillList(tableFills)//设置自动填充配置
                    .setVersionFieldName("version")//乐观锁配置
                    .setRestControllerStyle(true)//开启驼峰命名格式
                    .setControllerMappingHyphenStyle(true);//controller层

            //4.包名策略
            PackageConfig packageConfig = new PackageConfig();
            packageConfig
                    .setParent("com.talk")//所放置的包(父包)
                    .setMapper("mapper")//Mapper包
                    .setService("service")//服务层包
                    .setController("controller")//控制层
                    .setEntity("entity")//实体类
                    .setXml("mapper");//映射文件
            //5.整合配置
            AutoGenerator autoGenerator = new AutoGenerator();
            autoGenerator.setGlobalConfig(config)
                    .setDataSource(dataSourceConfig)
                    .setStrategy(strategy)
                    .setPackageInfo(packageConfig);
            //6.执行
            autoGenerator.execute();
        }
    }

4.运行代码

5.总结

使用代码生成器能够大大提高效率,不用自己一个一个手敲模块了!!!!

posted @   Andrenn  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示