• 浅谈MyBatis-Plus学习之代码生成器


    一、关于代码生成器介绍

    mybatis提供MGB(逆向工程)用来根据数据库配置信息生成对应Table的Mapper接口、Mapper映射文件以及Entity实体

    同样,MP也提供相应的代码大妈生成器,只是MP的代码生成器不同于基于XML的MGB,它是基于java代码。

    可以生成实体类,Mapper接口,Mapper映射文件,Service层,Controller层。

    二、MP代码生成器配置与示例

    2.1、pom文件配置

    <!-- 以下用于代码生成 -->
          <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
          </dependency>
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.7</version>
          </dependency>
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.7</version>
          </dependency>

    MP默认使用Velocity模版技术来生成代码,当然使用其他的模版技术同样可以,请参考官网配置

    2.2、以下是代码生成器的配置代码介绍

    public class TestGeneratorCode {
        
        /**
         * 代码shengcheng
         */
        @Test
        public void testGen() {
            //1.全局配置
            GlobalConfig gConfig = new GlobalConfig();
            gConfig.setActiveRecord(true)//支持AR模式
                  .setAuthor("Jay") //设置作者
                  .setBaseResultMap(true) //XML中的ResultMap标签
                  .setBaseColumnList(true) //XML标签
                  .setFileOverride(true) //文件覆盖设置
                  .setIdType(IdType.AUTO) //主键策略
                  .setOutputDir("D:\dev\workspace\workspace02\mpPro3\src\main\java") //生成路径
                  .setMapperName("%sMapper")  //%s会自动填充表实体属性
                  .setXmlName("%sMapper")    
                  .setServiceName("%sService")
                  .setServiceImplName("%sServiceImpl")
                  .setControllerName("%sController");
                  
            //2.数据源配置
            DataSourceConfig dsConfig = new DataSourceConfig();
            dsConfig.setDbType(DbType.MYSQL)
                    .setDriverName("com.mysql.jdbc.Driver")
                    .setUrl("jdbc:mysql://localhost:3306/mpdb")
                    .setUsername("root")
                    .setPassword("root");
            
            //3.策略配置
            StrategyConfig sConfig = new StrategyConfig();
            sConfig.setDbColumnUnderline(true) //表名、字段名、是否使用下划线命名
                   .setCapitalMode(true) //开启全局大写命名
                   .setNaming(NamingStrategy.underline_to_camel) //数据库映射到实体:下划线转驼峰
                   .setTablePrefix("tbl_")
                   .setInclude("tbl_employee"); //指定生成的表
                    
            //4.包名策略配置
            PackageConfig pConfig = new PackageConfig();
            pConfig.setParent("cn.hjj.mp")
                   .setEntity("entity")
                   .setMapper("mapper")
                   .setService("service")
                   .setServiceImpl("service.impl")
                   .setController("controller")
                   .setXml("mapper");
            
            //5.整合配置
            AutoGenerator autoGenerator = new AutoGenerator();
            autoGenerator.setGlobalConfig(gConfig)
                         .setDataSource(dsConfig)
                         .setStrategy(sConfig)
                         .setPackageInfo(pConfig);
            
            autoGenerator.execute();        
        }
    }

    代码执行后,工程目录结构如下

    还有要说明,生成的生成的EmployeeServiceImpl继承ServiceImpl类,

    其中注入EmployeeMapper,并且提供很多默认的CRUD方法

    /**
     * <p>
    * EmployeeServiceImpl.java * 服务实现类 * </p> * *
    @author Jay * @since 2018-10-04 */ @Service public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService { }
  • 相关阅读:
    GitHub教程学习笔记1本地Git管理
    GitHub教程学习笔记2远程仓库和本地仓库
    图像分割方法综述
    println输出乱码
    ngshow,ngif区别
    isFile() exists() isDirectory()的区别
    File类中的list和listFiles方法
    mkdir与mkdirs的区别
    新建play项目eclipsify后导入eclipse后无法debug调试
    大龄屌丝自学笔记Java零基础到菜鸟021
  • 原文地址:https://www.cnblogs.com/jayhou/p/9824314.html
Copyright © 2020-2023  润新知