Mybatis Plus+velocity自动生成代码

Mybatis+velocity自动生成代码

myBatis-Plus结合velocity模板配置基础信息生成代码

1.首先导入velocity的包

    <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
    </dependency>


2.初始化参数

    //项目存储位置
    public static String PROJECT_GENERATE_DISK = "";
    //包名
    public static String PACKAGE_NAME= "";
    //数据库地址
    public static String DB_URL = "";
    //数据库实例名
    public static String DRIVER_CLASS_NAME = "";
    //数据库类型
    public static String DB_TYPE = "";
    //数据库用户
    public static String USER = "";
    //数据库密码
    public static String PASSWORD = "";
    //数据库schema
    public static String SCHEMA = "";
    //要查询的表名
    public static String TABLE_NAMES = "";
    //创建人
    public static String AUTHOR = "";
    //是否强制带上注解
    public static boolean ENABLE_TABLE_FIELD_ANNOTATION = false;
    //生成的注解带上IdType类型
    public static IdType TABLE_IDTYPE = null;
    //是否去掉生成实体的属性名前缀
    public static String[] FIELD_PREFIX = null;
    //生成的Service 接口类名是否以I开头 默认是以I开头  user表 -> IUserService, UserServiceImpl
    public static boolean SERVICE_CLASS_NAME_START_WITHI = false;
    //jsp生成地址
    public static String JSP_URL="";


3.全局配置

 private static GlobalConfig GlobalGenerate(){
        GlobalConfig config = new GlobalConfig();
        config.setActiveRecord(false)// 不需要ActiveRecord特性的请改为false
            .setIdType(TABLE_IDTYPE)
            .setEnableCache(false);// XML 二级缓存
            .setAuthor(AUTHOR)
            .setBaseResultMap(true)// XML ResultMap
            .setBaseColumnList(false);// XML columList
            .setOutputDir(PROJECT_GENERATE_DISK+"\\java")
            .setFileOverride(true)
            .setControllerName("%sAction")//自定义文件命名,注意 %s 会自动填充表实体属性!
            ;
        if (!SERVICE_CLASS_NAME_START_WITHI) {
            config.setServiceName("%sService");
        }
           return config;
     }


4.数据源配置

 private static DataSourceConfig DaoSourceGenerate(){
      DataSourceConfig dataSourceConfig = new DataSourceConfig();
           DbType type=null;
           if("oracle".equals(DB_TYPE)){
               type=DbType.ORACLE;
           }else if("sql_server".equals(DB_TYPE)){
               type=DbType.SQL_SERVER;
           }else if("mysql".equals(DB_TYPE)){
               type=DbType.MYSQL;
           }else if("postgre_sql".equals(DB_TYPE)){
               type=DbType.POSTGRE_SQL;
           }
           dataSourceConfig.setDbType(type)//数据库类型
               .setUrl(DB_URL)//数据库地址
               .setUsername(AutoGenerateUtil.DB_TYPE)//数据库用户名
               .setPassword(AutoGenerateUtil.PASSWORD)//数据库密码
               .setDriverName(AutoGenerateUtil.DRIVER_CLASS_NAME)//实例名
               .setSchemaname(AutoGenerateUtil.SCHEMA);
           return dataSourceConfig;
     }


5.策略配置

 private static StrategyConfig StrategyGenerate(){
    StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig
            .setVersionFieldName("version")
            .setCapitalMode(true)// 全局大写命名 ORACLE 注意
            .setEntityLombokModel(false)
            .setDbColumnUnderline(true)
            .setNaming(NamingStrategy.underline_to_camel)// 表名生成策略
            .entityTableFieldAnnotationEnable(ENABLE_TABLE_FIELD_ANNOTATION)
            .fieldPrefix(FIELD_PREFIX)//test_id -> id, test_type -> type
            .setInclude(TABLE_NAMES);//修改替换成你需要的表名,多个表名传数组
            .setExclude(new String[]{"test"}); // 排除生成的表
            .setTablePrefix(new String[] { "tlog_", "tsys_" });// 此处可以修改为您的表前缀
             .setSuperEntityClass("com.lin.demo.TestEntity");// 自定义实体父类
            .setSuperEntityColumns(new String[] { "test_id","age" });// 自定义实体,公共字段
            .setSuperMapperClass("com.lin.demo.TestMapper");// 自定义 mapper 父类
             .setSuperServiceClass("com.lin.demo.TestService");// 自定义 service 父类
            .setSuperServiceImplClass("com.lin.demo.TestServiceImpl");// 自定义 service 实现类父类
             .setSuperControllerClass("com.lin.demo.TestController");// 自定义 controller 父类
            .setEntityColumnConstant(true);// 【实体】是否生成字段常量(默认 false)public static final String ID = "test_id";
            .setEntityBuilderModel(true);// 【实体】是否为构建者模型(默认 false)public User setName(String name) {this.name = name; return this;}
         return strategyConfig;


6.自定义模板配置

 private static TemplateConfig TemplateGenerate(){
    TemplateConfig templateConfig = new TemplateConfig()
        .setXml("/template/mapper2.xml")//注意:不要带上.vm
        .setController("/template/action.java")
        .setMapper("/template/mapper.java")
        .setXml("/template/mapper.xml")
        .setService("/template/service.java")
        .setServiceImpl("/template/serviceImpl.java")
        ;
     return templateConfig;
     }


7.自定义文件及key

private static InjectionConfig FileGenerate(){
      InjectionConfig injectionConfig = new InjectionConfig() {
            @Override
            public void initMap() {//自定义参数
                Map<String, Object> map = new HashMap<>();
                map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
                this.setMap(map);
            }
        };
        
        // 自定义 xxList.jsp 生成
        List<FileOutConfig> focList = new ArrayList<FileOutConfig>();
        //创建jsp目录
        Files files = new Files(JSP_URL);
        files.createlist();
        //生成列表页面
        focList.add(new FileOutConfig("/template/list.jsp.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                return JSP_URL+"\\list.jsp";
            }
        });
        injectionConfig.setFileOutConfigList(focList);
        return injectionConfig;
     }


8.包配置

 public static PackageConfig PackageGenerate(){
         PackageConfig pc = new PackageConfig()
             .setParent("com")
             .setModuleName(PACKAGE_NAME)
             .setController("action")
             .setEntity("entity")
             .setMapper("mapper")
             .setXml("mapper");
         return pc;
     }


9.生成代码

  public void generateByTablesWithInjectConfig() {
        //全局配置
        GlobalConfig config =AutoGenerateUtil.GlobalGenerate();
        //配置数据源
        DataSourceConfig dataSourceConfig=AutoGenerateUtil.DaoSourceGenerate();
        //配置策略
        StrategyConfig strategyConfig = AutoGenerateUtil.StrategyGenerate();
        //配置模板
        TemplateConfig templateConfig = AutoGenerateUtil.TemplateGenerate();
        //生成jsp文件
        InjectionConfig injectionConfig = AutoGenerateUtil.FileGenerate();
        //配置包
        PackageConfig packageConfig=AutoGenerateUtil.PackageGenerate();
        //生成代码
        new AutoGenerator()
            .setGlobalConfig(config)
            .setTemplate(templateConfig)//自定义模板路径
            .setCfg(injectionConfig)
            .setDataSource(dataSourceConfig)
            .setStrategy(strategyConfig)
            .setPackageInfo(packageConfig)
            .execute();
    }


10.调用方法并配置基础参数就可生成模板啦

    AutoGenerateUtil generatorServiceEntity=new AutoGenerateUtil();
    generatorServiceEntity.generateByTablesWithInjectConfig();


*可以根据自己项目的需求自定义模版,也可以使用源码中自带的模板生成最基础的代码
模板配置中不传参数时,默认使用源码中的模板。

*详情参考 MyBatis-Plus 代码生成器 (http://mp.baomidou.com/guide/generator.html)

*源码地址 https://github.com/baomidou/mybatis-plus/tree/3.0/mybatis-plus-generator/src/main
--------------------- 
原文:https://blog.csdn.net/u011273768/article/details/83058291 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值