美文网首页
mybatis-plus代码构造器

mybatis-plus代码构造器

作者: 你所热爱的 | 来源:发表于2018-12-28 13:13 被阅读0次

    mybatis-plus代码构造器工具类

    /**
     * FileName:         MybatisPlusGenerator.java
     * @author:          zhu
     * @version            V1.0
     * Createdate:      2018年12月26日     上午9:47:51
     * Copyright:        Copyright(C) 2018
     * Company           CY.
     * All rights Reserved, Designed By zhu
    
     * Modification  History:
     * Date         Author        Version        Discription
     * ---------------------------------------------------------------------------
     * 2018年12月26日     zhu       1.0             1.0
    
     * Why & What is modified:
    
     */
    package com.zhu.test;
    import org.junit.Test;
    
    import com.baomidou.mybatisplus.annotation.DbType;
    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.rules.NamingStrategy;
    
    /**
     * @ClassName:       MybatisPlusGenerator
     * @author:          zhu
     * @date:            2018年12月26日        上午9:47:51
     */
    public class MybatisPlusGenerator {
        /**
         * 项目名
         */
        private static final String PROJECT_NAME = "test";
        /**
         * 包名
         */
        private static final String PACKAGE_NAME = "com.zhu.test";
        /**
         * 输出文件的路径
         */
        private static final String OUT_PATH = "D:/eclipse/test/src/main/java/";
        /**
         * 代码生成者
         */
        private static final String AUTHOR = "zhu";
        /**
         * JDBC相关配置
         */
        private static final String DRIVER = "com.mysql.jdbc.Driver";
        /**
         * 连接地址
         */
        private static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=true";
        /**
         * 账号
         */
        private static final String USER_NAME = "root";
        /**
         * 密码
         */
        private static final String PASSWORD = "123456";
        /**
         * 要生成的表名
         */
        private static final String[] TABLE_NAMES = new String[]{"zhu"};
    
        @Test
        public void generateCode() {
            //user -> UserService, 设置成true: user -> IUserService
            boolean serviceNameStartWithI = false;
            //指定生成的表名
            generateByTables(serviceNameStartWithI, PACKAGE_NAME, TABLE_NAMES);
        }
    
        /**
         * 根据表自动生成
         *
         * @param serviceNameStartWithI 默认为false
         * @param packageName           包名
         * @param tableNames            表名
         * @author Terry
         */
        private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {
            //配置数据源
            DataSourceConfig dataSourceConfig = getDataSourceConfig();
            // 策略配置
            StrategyConfig strategyConfig = getStrategyConfig(tableNames);
            //全局变量配置
            GlobalConfig globalConfig = getGlobalConfig(serviceNameStartWithI);
            //包名配置
            PackageConfig packageConfig = getPackageConfig(packageName);
            //自动生成
            atuoGenerator(dataSourceConfig, strategyConfig, globalConfig, packageConfig);
        }
    
        /**
         * 集成
         *
         * @param dataSourceConfig 配置数据源
         * @param strategyConfig   策略配置
         * @param config           全局变量配置
         * @param packageConfig    包名配置
         * @author Terry
         */
        private void atuoGenerator(DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig, GlobalConfig config, PackageConfig packageConfig) {
            new AutoGenerator()
                    .setGlobalConfig(config)
                    .setDataSource(dataSourceConfig)
                    .setStrategy(strategyConfig)
                    .setPackageInfo(packageConfig)
                    .execute();
        }
    
        /**
         * 设置包名
         *
         * @param packageName 父路径包名
         * @return PackageConfig 包名配置
         * @author Terry
         */
        private PackageConfig getPackageConfig(String packageName) {
            return new PackageConfig()
                    .setParent(packageName)
                    .setXml("mapper")
                    .setMapper("mapper")
                    .setController("controller")
                    .setEntity("model");
        }
    
        /**
         * 全局配置
         *
         * @param serviceNameStartWithI false
         * @return GlobalConfig
         * @author Terry
         */
        private GlobalConfig getGlobalConfig(boolean serviceNameStartWithI) {
            GlobalConfig globalConfig = new GlobalConfig();
            globalConfig
                    // XML columList
                    .setBaseColumnList(true)
                    // XML ResultMap
                    .setBaseResultMap(true)
                    // 开启 activeRecord 模式
                    .setActiveRecord(false)
                    .setAuthor(AUTHOR)
                    //设置输出路径  如此处为项目名称则调用getOutputDir(projectName)方法.否则直接用OUT_PATH
                    .setOutputDir(OUT_PATH)
                    // 是否覆盖文件
                    .setFileOverride(true)
                    // XML 二级缓存
                    .setEnableCache(false);
            if (!serviceNameStartWithI) {
                //设置service名
                globalConfig.setServiceName("%sService");
            }
            return globalConfig;
        }
    
        /**
         * 返回项目路径
         *
         * @param projectName 项目名
         * @return 项目路径
         * @author Terry
         */
        private String getOutputDir(String projectName) {
            String path = this.getClass().getClassLoader().getResource("").getPath();
            int index = path.indexOf(projectName);
            return path.substring(1, index) + projectName + "/src/main/java/";
            //return OUT_PATH;
        }
    
        /**
         * 策略配置
         *
         * @param tableNames 表名
         * @return StrategyConfig
         * @author Terry
         */
        private StrategyConfig getStrategyConfig(String... tableNames) {
            return new StrategyConfig()
                    // 全局大写命名 ORACLE 注意
                    .setCapitalMode(true)
                    .setEntityLombokModel(false)/*
                                                 * // 表名、字段名、是否使用下划线命名(默认 false) .setDbColumnUnderline(false)
                                                 */
                    //从数据库表到文件的命名策略
                    .setNaming(NamingStrategy.underline_to_camel)
                    //需要生成的的表名,多个表名传数组
                    .setInclude(tableNames)
                    // .setTablePrefix(new String[]{"demo_"})// 此处可以修改为您的表前缀
                    ;
        }
    
        /**
         * 配置数据源
         *
         * @return 数据源配置 DataSourceConfig
         * @author Terry
         */
        private DataSourceConfig getDataSourceConfig() {
            return new DataSourceConfig()
                    // 数据库类型
                    .setDbType(DbType.MYSQL)
                    .setUrl(URL)
                    .setUsername(USER_NAME)
                    .setPassword(PASSWORD)
                    .setDriverName(DRIVER);
        }
    
        /**
         * 根据表自动生成
         *
         * @param packageName 包名
         * @param tableNames  表名
         * @author Terry
         */
        @SuppressWarnings("unused")
        private void generateByTables(String packageName, String... tableNames) {
            generateByTables(true, packageName, tableNames);
        }
    }
    

    相关文章

      网友评论

          本文标题:mybatis-plus代码构造器

          本文链接:https://www.haomeiwen.com/subject/oqpslqtx.html