• 如何根据数据库快速生成开发中的每一层???


    下面主要介绍如何使用MyBatisPlus生成各层代码

    直接撸代。。。

    package xyz.Mrzhangxd.basic.tool;
    
    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.converts.MySqlTypeConvert;
    import com.baomidou.mybatisplus.generator.config.rules.DateType;
    import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
    
    
    public class MyBatisPlusGenerator {
        
        public static void main(String[] args) {
            AutoGenerator ag = new AutoGenerator();
            // 选择 freemarker 引擎,默认 Veloctiy
            ag.setTemplateEngine(new FreemarkerTemplateEngine());
    
            //全局配置
            GlobalConfig globalConfig = new GlobalConfig();
            // String projectPath = System.getProperty("user.dir");
            String projectPath = "D:\bi_group";
            globalConfig.setActiveRecord(false)
                    .setAuthor("MrZhangxd")
                    .setOutputDir(projectPath + "/src/main/java") //配置路径
                    /* 自定义文件命名,注意 %s 会自动填充表实体属性! */
                    // .setControllerName("%sController")
                    .setServiceName("%sService")
                    .setServiceImplName("%sServiceImpl")
                    .setMapperName("%sMapper")
                    .setXmlName("%sMapper")
                    .setFileOverride(true) // 是否覆盖同名文件,默认是false
                    .setActiveRecord(false) // 不需要ActiveRecord特性的请改为false
                    .setEnableCache(false) // XML 二级缓存
                    .setBaseResultMap(true) // XML ResultMap
                    .setBaseColumnList(false) // XML columList
                    .setDateType(DateType.ONLY_DATE)
                    .setOpen(false)
            ;
    
            //数据源配置
            DataSourceConfig dataSourceConfig = new DataSourceConfig();
            dataSourceConfig.setDbType(DbType.MYSQL)
                    .setDriverName("com.mysql.cj.jdbc.Driver")
                    .setUrl("数据库连接url")
                    .setUsername("数据库用户名")
                    .setPassword("数据库用户密码")
                    // 自定义数据库表字段类型转换
                    .setTypeConvert(new MySqlTypeConvert() {
                        @Override
                        public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
                            return super.processTypeConvert(globalConfig, fieldType);
                        }
                    })
            ;
    
            //策略配置
            StrategyConfig strategyConfig = new StrategyConfig();
            strategyConfig.setNaming(NamingStrategy.underline_to_camel) // 表名生成策略
                    .setEntityLombokModel(true)
                    .setRestControllerStyle(true) // 设置controller自动加RestController注解
             .setInclude(new String[]{"xxxx", "xxxx", "xxxxx"}) //修改替换成你需要的表名,多个表名传数组,如果注释掉就生成库中所有的表
            // .setExclude(new String[]{"test"}) // 排除生成的表
            // .setTablePrefix(new String[]{"t_"}) // 此处可以修改为您的表前缀
            ;
            // // 自定义实体父类
            // strategyConfig.setSuperEntityClass("com.baomidou.demo.TestEntity");
            // // 自定义实体,公共字段
            // strategyConfig.setSuperEntityColumns(new String[]{"test_id", "age"});
            // // 自定义 mapper 父类
            // strategyConfig.setSuperMapperClass("com.baomidou.demo.TestMapper");
            // // 自定义 service 父类
            // strategyConfig.setSuperServiceClass("com.baomidou.demo.TestService");
            // // 自定义 service 实现类父类
            // strategyConfig.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");
            // 自定义 controller 父类
            strategyConfig.setSuperControllerClass("cn.yichehuoban.bi.common.controller.BaseController");
            // // 【实体】是否生成字段常量(默认 false)
            // strategyConfig.setEntityColumnConstant(true);
            // // 【实体】是否为构建者模型(默认 false)
            // strategyConfig.setEntityBuilderModel(true);
    
            //包名策略配置
            PackageConfig packageConfig = new PackageConfig();
            packageConfig.setParent("xyz.Mrzhangxd.basic")
                    .setController("controller.internal")
                    .setService("service.internal")
                    .setServiceImpl("service.internal.impl")
                    .setEntity("entity.internal")
                    .setMapper("mapper.internal")
                    .setXml("mapper.internal")
            ;
    
            // // 自定义配置
            // InjectionConfig cfg = new InjectionConfig() {
            //     @Override
            //     public void initMap() {
            //         // to do nothing
            //     }
            // };
            //
            // // 如果模板引擎是 freemarker
            // String templatePath = "/templates/mapper.xml.ftl";
            // // 如果模板引擎是 velocity
            // // String templatePath = "/templates/mapper.xml.vm";
            //
            // // 自定义输出配置
            // List<FileOutConfig> focList = new ArrayList<>();
            // // 自定义配置会被优先输出
            // focList.add(new FileOutConfig(templatePath) {
            //     @Override
            //     public String outputFile(TableInfo tableInfo) {
            //         // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
            //         return projectPath + "/src/main/resources/mapper/" + packageConfig.getModuleName()
            //                 + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            //     }
            // });
            // cfg.setFileOutConfigList(focList);
    
            /*
            cfg.setFileCreate(new IFileCreate() {
                @Override
                public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
                    // 判断自定义文件夹是否需要创建
                    checkDir("调用默认方法创建的目录");
                    return false;
                }
            });
            */
    
            //整合配置
            ag.setGlobalConfig(globalConfig)
                    .setDataSource(dataSourceConfig)
                    .setStrategy(strategyConfig)
                    .setPackageInfo(packageConfig)
            // .setCfg(cfg)
            ;
    
            //执行
            ag.execute();
        }
    
    
    }
    
    

    备注:转发请标明出处,谢谢

  • 相关阅读:
    Mybatis框架中Mapper文件传值参数获取。【Mybatis】
    Mybatis传多个参数(三种解决方案)
    eclipse工程当中的.classpath 和.project文件什么作用?
    在Eclipse中显示.project和.classpath和.setting目录
    eclipse项目中.classpath文件详解
    postgres 错误duplicate key value violates unique constraint 解决方案
    Java反射机制
    【深入Java虚拟机】之二:Class类文件结构
    JVM-类加载机制
    sql 替换字段中的部分字符,替换指定字符
  • 原文地址:https://www.cnblogs.com/MrZhangxd/p/13450804.html
Copyright © 2020-2023  润新知