淺談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 { }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM