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