浅谈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 { }

猜你喜欢

转载自www.cnblogs.com/jayhou/p/9824314.html