依赖
MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<!-- 默认模板引擎-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
Navicat建测试表
添加测试数据
测试类写自动生成代码
@Test
public void CodeGenerator () {
// 创建代码生成器对象
AutoGenerator mpg = new AutoGenerator();
// 1 全局配置
GlobalConfig gc = new GlobalConfig();
// 2 获取项目文件位置 绝对地址+文件位置
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("posden");
gc.setOpen(false); // 当前文件资源管理器
gc.setIdType(IdType.AUTO); // 设置主键策略
gc.setServiceName("%sService"); // 自动生成的Service接口首字母I去掉
gc.setDateType(DateType.ONLY_DATE); // 日期配置
gc.setSwagger2(true); // 实体属性 Swagger2 注解 当然前提是你配置了swagger 不清楚的可以看我之前博客,地址附在文末
mpg.setGlobalConfig(gc);
// 3 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://{ip}:3306/test?characterEncoding=UTF-8&useSSL=false&useUnicode=true&serverTimezone=UTC");
dsc.setSchemaName("test");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
// 4 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("test"); // 模块名
pc.setParent("com.example.demo"); // 父目录
pc.setEntity("entity");
pc.setController("controller");
pc.setMapper("mapper");
pc.setService("server");
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
// strategy.setInclude("test" + "_\\w*"); // 完整路径 或 正则表达式匹配
strategy.setInclude("test");
strategy.setNaming(NamingStrategy.underline_to_camel); // 表名 驼峰命名转化
strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 字段名
// strategy.setTablePrefix("test_"); // 去除前缀
strategy.setEntityLombokModel(true);// 自动添加lombok
strategy.setEntityBooleanColumnRemoveIsPrefix(true); // 去除boolean值 is_
// 自动填充
TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT);
TableFill gmtModified = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(gmtCreate);
tableFills.add(gmtModified);
strategy.setTableFillList(tableFills);
// 乐观锁
strategy.setVersionFieldName("version");
// restful
strategy.setRestControllerStyle(true);
//url t驼峰变 _
strategy.setControllerMappingHyphenStyle(true);
mpg.setStrategy(strategy);
// 执行
mpg.execute();
}
结果
controller层编写curd restful风格
代码书写可能不严谨,欢迎指正。但功能已实现
public class TestController {
@Resource
private TestService testService;
@GetMapping
public List<Test> getList() {
return testService.list(null);
}
@GetMapping("{id}")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "测试ID", dataTypeClass = String.class, required = true)
})
public Test getItem(@PathVariable Integer id) {
return testService.getById(id);
}
@PutMapping("{id}")
public boolean updateItem(@PathVariable Integer id, @RequestBody Test test) {
QueryWrapper<Test> updateQueryWrapper = new QueryWrapper<>();
updateQueryWrapper.eq("id", id);
int count = testService.count(updateQueryWrapper);
if(count == 1){
return testService.updateById(test);
}else {
return false;
}
}
@DeleteMapping("{id}")
public boolean deleteItem(@PathVariable Integer id) {
QueryWrapper<Test> updateQueryWrapper = new QueryWrapper<>();
updateQueryWrapper.eq("id", id);
int count = testService.count(updateQueryWrapper);
if(count == 1){
return testService.removeById(id);
}else {
return false;
}
}
@PostMapping
public boolean createItem(@RequestBody Test test) {
return testService.save(test);
}
}