zoukankan      html  css  js  c++  java
  • MyBatisPlus AutoGenrator代码自动生成

    1. 使用MyBatisPlus AutoGenrator注意数据库表字段最好用下划线分格,生成的Bean类才会是驼峰式的

    2. 在/src/main/resources中加入Mybatis-Plus.properties配置文件

    #此处为本项目src所在路径(代码生成器输出路径)  
    OutputDir=E:/workspace/ssmp-crud-2/src/main/java  
    OutputDirXml=E:/workspace/ssmp-crud-2/src/main/resources  
    #数据库表名(此处切不可为空,如果为空,则默认读取数据库的所有表名)  
    tableName=tbl_emp  
    #装代码的文件夹名  
    className=empMsg  
    #设置作者  
    author=Yifan  
    #正常情况下,下面的代码无需修改!!!!!!!!!!  
    #自定义包路径  
    parent=com.atguigu.crud  
    #数据库地址  
    url=jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8  
    userName=root  
    password=123456  

    3. Java代码中直接运行

    public class MpGenerator1{  
        public static void main(String[] args) throws InterruptedException {  
            //用来获取Mybatis-Plus.properties文件的配置信息  
            final ResourceBundle rb = ResourceBundle.getBundle("Mybatis-Plus");  
              
            AutoGenerator mpg = new AutoGenerator();  
            // 全局配置  
            GlobalConfig gc = new GlobalConfig();  
            gc.setOutputDir(rb.getString("OutputDir"));  
            gc.setFileOverride(true);  
            gc.setActiveRecord(true);  
            gc.setEnableCache(true);// XML 二级缓存  
            gc.setBaseResultMap(true);// XML ResultMap  
            gc.setBaseColumnList(true);// XML columList  
            gc.setAuthor(rb.getString("author"));  
            // 自定义文件命名,注意 %s 会自动填充表实体属性!  
            gc.setMapperName("%sMapper");  
            gc.setXmlName("%sMapper");  
            gc.setServiceName("%sService");  
            gc.setServiceImplName("%sServiceImpl");  
            gc.setControllerName("%sController");  
            mpg.setGlobalConfig(gc);  
              
            // 数据源配置  
            DataSourceConfig dsc = new DataSourceConfig();  
            dsc.setDbType(DbType.MYSQL);  
            /*dsc.setTypeConvert(new MySqlTypeConvert(){  
                // 自定义数据库表字段类型转换【可选】  
                @Override  
                public DbColumnType processTypeConvert(String fieldType) {  
                    System.out.println("转换类型:" + fieldType);  
                    return super.processTypeConvert(fieldType);  
                }  
            });*/  
            dsc.setDriverName("com.mysql.jdbc.Driver");  
            dsc.setUrl(rb.getString("url"));  
            dsc.setUsername(rb.getString("userName"));  
            dsc.setPassword(rb.getString("password"));  
            mpg.setDataSource(dsc);  
      
            // 策略配置  
            StrategyConfig strategy = new StrategyConfig();  
            // strategy.setCapitalMode(true);// 全局大写命名 ORACLE 注意  
            // strategy.setTablePrefix(new String[] { "tlog_", "tsys_" });// 此处可以修改为您的表前缀  
            strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略  
            strategy.setInclude(new String[] {rb.getString("tableName")}); // 需要生成的表  
            // strategy.setExclude(new String[]{"test"}); // 排除生成的表  
            // 自定义实体父类  
            // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");  
            // 自定义实体,公共字段  
            // strategy.setSuperEntityColumns(new String[] { "test_id", "age" });  
            // 自定义 mapper 父类  
            // strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");  
            // 自定义 service 父类  
            // strategy.setSuperServiceClass("com.baomidou.demo.TestService");  
            // 自定义 service 实现类父类  
            // strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");  
            // 自定义 controller 父类  
            // strategy.setSuperControllerClass("com.baomidou.demo.TestController");  
            // 【实体】是否生成字段常量(默认 false)  
            // public static final String ID = "test_id";  
            // strategy.setEntityColumnConstant(true);  
            // 【实体】是否为构建者模型(默认 false)  
            // public User setName(String name) {this.name = name; return this;}  
            // strategy.setEntityBuilderModel(true);  
            mpg.setStrategy(strategy);  
              
            // 包配置  
            PackageConfig pc = new PackageConfig();  
            pc.setParent(rb.getString("parent"));  
            // pc.setModuleName("tbldept");//模块名称,单独生成模块时使用!!!!!!!!!!!  
            pc.setController("controller."+rb.getString("className"));  
            pc.setService("service."+rb.getString("className"));  
            pc.setServiceImpl("service."+rb.getString("className")+".impl");  
            pc.setEntity("bean."+rb.getString("className"));  
            pc.setMapper("dao."+rb.getString("className"));  
            mpg.setPackageInfo(pc);  
              
            // 注入自定义配置,可以在 VM 中使用 cfg.abc 【可无】  
            InjectionConfig cfg = new InjectionConfig() {  
                @Override  
                public void initMap() {  
                    Map<String, Object> map = new HashMap<String, Object>();  
                    map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");  
                    this.setMap(map);  
                }  
            };  
              
            // 自定义 xxList.jsp 生成  
            List<FileOutConfig> focList = new ArrayList<FileOutConfig>();  
            /*focList.add(new FileOutConfig("/template/list.jsp.vm") {  
                @Override  
                public String outputFile(TableInfo tableInfo) {  
                    // 自定义输入文件名称  
                    return "E:/workspace/ssmp-crud2/src/main/webapp/WEB-INF/" + tableInfo.getEntityName() + ".jsp";  
                }  
            });  
            cfg.setFileOutConfigList(focList);  
            mpg.setCfg(cfg);*/  
              
            // 调整 xml 生成目录演示  
            focList.add(new FileOutConfig("/templates/mapper.xml.vm") {  
                @Override  
                public String outputFile(TableInfo tableInfo) {  
                    return rb.getString("OutputDirXml")+"/mapper/" +rb.getString("className") + "/" + tableInfo.getEntityName() + ".xml";  
                }  
            });  
            cfg.setFileOutConfigList(focList);  
            mpg.setCfg(cfg);  
              
            // 关闭默认 xml 生成,调整生成 至 根目录  
            TemplateConfig tc = new TemplateConfig();  
            tc.setXml(null);  
            mpg.setTemplate(tc);  
              
            // 自定义模板配置,可以 copy 源码 mybatis-plus/src/main/resources/templates 下面内容修改,  
            // 放置自己项目的 src/main/resources/templates 目录下, 默认名称一下可以不配置,也可以自定义模板名称  
            // TemplateConfig tc = new TemplateConfig();  
            // tc.setController("...");  
            // tc.setEntity("...");  
            // tc.setMapper("...");  
            // tc.setXml("...");  
            // tc.setService("...");  
            // tc.setServiceImpl("...");  
            // 如上任何一个模块如果设置 空 OR Null 将不生成该模块。  
            // mpg.setTemplate(tc);  
      
            // 执行生成  
            mpg.execute();  
        }  
    }
  • 相关阅读:
    HDU 5492 Find a path
    codeforce gym 100548H The Problem to Make You Happy
    Topcoder SRM 144 Lottery
    codeforce 165E Compatible Numbers
    codeforce gym 100307H Hack Protection
    区间DP总结
    UESTC 1321 柱爷的恋爱 (区间DP)
    HDU 4283 You Are the One (区间DP)
    HDU 2476 String painter (区间DP)
    UESTC 426 Food Delivery (区间DP)
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/9098153.html
Copyright © 2011-2022 走看看