mybatis-plus代码生成

pom.xml依赖

  <!--  springboot 整合mybaits plus 相关  -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.0</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>

yaml文件

author=xue
url=jdbc:mysql://127.0.0.1:3306/2024_1_6_order?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=false
driverName=com.mysql.cj.jdbc.Driver
username=root
password=123456
parentPageage=com.uums.outlet
projectModule=uums-server
tableName=consumer,perms,consumer_perms


import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.io.InputStream;
import java.util.Properties;

/**
 * mybatis代码生成工具类
 */
public class MybatisPlusUtils {
    private static Properties properties=null;

    static{
        try {
            properties=new Properties();
            // 将Properties属性文件转换为字符输入流
            InputStream inputStream = MybatisPlusUtils.class.getResourceAsStream("/mybatis-plus.properties");
            // 加载流
            properties.load(inputStream);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        try {
            generator(properties.getProperty("author"),//作者
                    properties.getProperty("url"), //数据库地址
                    properties.getProperty("driverName"),//数据库驱动
                    properties.getProperty("username"),//数据库帐号
                    properties.getProperty("password"),//数据库密码
                    properties.getProperty("parentPageage"),//项目最大的包名
                    properties.getProperty("projectModule"),//项目名或项目模块名
                    properties.getProperty("tableName"));//要操作的表名,多个表名用逗号隔开
            System.out.println("mybaits代码生成成功");
        }catch (Exception e){
            e.printStackTrace();
        }

    }

    /**
     * Mybatis一键生成entity,mapper,mapper.xml,service,serviceImpl,controller
     * @param author            开发人员
     * @param url               驱动连接的URL
     * @param driverName        驱动名称
     * @param username          数据库连接用户名
     * @param password          数据库连接密码
     * @param parentPackage     父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名
     * @param projectModule     项目名
     * @param tableName         表名,多个表名逗号隔开
     */
    public static void generator(String author,
                                 String url,
                                 String driverName,
                                 String username,
                                 String password,
                                 String parentPackage,
                                 String projectModule,
                                 String tableName) {
        AutoGenerator mpg = new AutoGenerator();
        mpg.setGlobalConfig(globalConfig(author,projectModule));//全局配置
        mpg.setDataSource(dataSourceConfig(url,driverName,username,password));//数据源配置
        mpg.setPackageInfo(packageConfig(parentPackage));//包配置
        mpg.setStrategy(strategyConfig(tableName));//策略配置
        mpg.setTemplate(templateConfig());//模板配置
        mpg.execute();
    }

    /**
     * 全局配置
     * @param author            开发人员
     * @param projectModule     项目模块名
     * @return                  GlobalConfig
     */
    private static GlobalConfig globalConfig (String author, String projectModule) {
        String projectPath = System.getProperty("user.dir");
        GlobalConfig globalConfig = new GlobalConfig();
        // 文件输出目录
		//如果要在项目中生成用这个
		//globalConfig.setOutputDir(projectPath + "/src/main/java");
		//如果要在模块中生成用这个
        globalConfig.setOutputDir(projectPath + "/" + projectModule + "/src/main/java");
        // 添加作者信息
        globalConfig.setAuthor(author);
        //设置时间类型为Date
        globalConfig.setDateType(DateType.TIME_PACK);
        // 生成文件后不默认打开
        globalConfig.setOpen(false);
        // 自定义service生成的名字,用于删除自动生成的I前缀
        //globalConfig.setServiceName("%sService");
        return globalConfig;
    }

    /**
     * 数据源设置
     * @param url           驱动连接的URL
     * @param driverName    驱动名称
     * @param username      数据库连接用户名
     * @param password      数据库连接密码
     * @return              DataSourceConfig
     */
    private static DataSourceConfig dataSourceConfig (String url,
                                                      String driverName,
                                                      String username,
                                                      String password) {
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl(url);
        dataSourceConfig.setDriverName(driverName);
        dataSourceConfig.setUsername(username);
        dataSourceConfig.setPassword(password);
        return dataSourceConfig;
    }

    /**
     * 包配置
     * @param parentPackage       父包名,最大的包名
     * @return                  PackageConfig
     */
    private static PackageConfig packageConfig(String parentPackage) {
        // 包配置
        PackageConfig packageConfig = new PackageConfig();
        // 包名
        packageConfig.setParent(parentPackage);
        //各个包目录起名
        packageConfig.setEntity("po");
        packageConfig.setMapper("dao");
        packageConfig.setXml("dao");
        packageConfig.setService("service");
        return packageConfig;
    }

    /**
     * 策略配置
     * @param tableName     数据库表名称,多个用英文逗号隔开
     * @return              StrategyConfig
     */
    private static StrategyConfig strategyConfig (String tableName) {
        // 策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        // 字段驼峰命名
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        // 设置实体类的lombok(此处看个人使用,如果不使用lombok,那么在生成之后再去添加构造方法等等)
        strategyConfig.setEntityLombokModel(true);
        strategyConfig.setRestControllerStyle(true);
        // scanner("表名,多个英文逗号分割").split(",")
        strategyConfig.setInclude((tableName).split(","));
        // 驼峰生成方法
        strategyConfig.setControllerMappingHyphenStyle(true);
        return strategyConfig;
    }

    /**
     * 模板配置项
     * @return  TemplateConfig
     */
    private static TemplateConfig templateConfig () {
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setXml(ConstVal.TEMPLATE_XML);
        //不生成mapper.xml文件
        templateConfig.setXml(null);
        //不生成service
        templateConfig.setService(null);
        //不生成service实现类
        templateConfig.setServiceImpl(null);
        //不生成controller类
        templateConfig.setController(null);
        return templateConfig;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值