一、關於代碼生成器介紹
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 { }