mbaits-plus
有很多好用的功能,今天我们这里介绍一下mbatis-plus的代码生成器
为啥要用?
给我一个数据库表,我可以给你生成三层架构,mapper层,server层,pojo基础类全部一键生成
但是我觉得还不够满意,所以我自己封装了一下,让他也能一键生成controller,从而来实现一键现实增删改查
同时今天也给不会用的同学0基础入门mbatis-plus
首先你们需要下载一下我已经配置并封装好的mbatis-plus
黑盘https://blackyun.cn/#/info?id=1659478347220594689大家可以自行下载项目,直接导入idea即可
同时我们创建自己的项目包为:
src/main/java/com/black/下面就是自己的项目了,如下图
当然也可以用自己的包名,改一下import 就行
接着我们打开我配置好的mbatis-plus,
1.先加载依赖,这个就不说了
2.找到autoCode,修改里面的数据库配置
这里我也提供一下这个核心代码,有能力的可以自己导入依赖后,自行修改
package com;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class autoCode {
private static String toHump(String table){
if(table.contains("_")){
int index = table.indexOf("_");
String first = table.substring(0, index+1);
String newFirst = first.replace("_", "");
String last = table.substring(index+1);
String newLast = Character.toUpperCase(last.charAt(0)) + last.substring(1);
String newTable=newFirst+newLast;
return toHump(newTable);
}
return table;
}
public static void getCode(String table){
String clazz=toHump(table);
String lose=clazz;
clazz=Character.toUpperCase(clazz.charAt(0)) + clazz.substring(1);
File file = new File("");
String path = null;
try {
path = file.getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
}
path+="\\src\\main\\java\\com\\black\\"+clazz;
// 1、创建代码生成器
AutoGenerator mpg = new AutoGenerator();
// 2、全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("BlackJun");
gc.setOpen(false); //生成后是否打开资源管理器
gc.setFileOverride(false); //重新生成时文件是否覆盖
gc.setServiceName("%sService"); //去掉Service接口的首字母I
gc.setIdType(IdType.ASSIGN_ID); //主键策略
gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
gc.setSwagger2(false);//开启Swagger2模式
mpg.setGlobalConfig(gc);
// 3、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("自己的数据库");
dsc.setDriverName("自己的数据库驱动");
dsc.setUsername("自己的用户名");
dsc.setPassword("自己的密码");
// dsc.setPassword("pjh132");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
// 4、包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName(null); //模块名******************
pc.setParent("com.black."+lose);
pc.setController("controller");
pc.setEntity("pojo");
pc.setService("service");
pc.setMapper("mapper");
mpg.setPackageInfo(pc);
// 5、策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude(table);//对那一张表生成代码
strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀
strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作
strategy.setRestControllerStyle(true); //restful api风格控制器
strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符
mpg.setStrategy(strategy);
// 6、执行
mpg.execute();
String put="";
put+=("package com.black."+lose+".controller;\n");
put+=("import org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bind.annotation.*;\nimport java.util.Map;\n");
put+=("import com.black.common.pojo.responseJson;\n");
put+=("import com.black."+lose+".pojo."+clazz+";\n");
put+=("import com.black."+lose+".service."+clazz+"Service;\n");
put+=("@RestController\n");
put+=("@RequestMapping(\"/"+lose+"\")\n");
put+=("public class "+clazz+"Controller {\n");
put+=("\n");
put+=("\t@Autowired\n");;
put+=("\t"+clazz + "Service" + " " + lose + "Service;\n");
put+=("\n");
put+=("\t@PostMapping(\"/\")\n");
put+=("\tpublic responseJson add(@RequestBody "+clazz+" "+lose+") {\n");
put+=("\t"+lose+"Service.save("+lose+");\n");
put+=("\treturn new responseJson("+lose+"Service.list());\n");
put+=("\t}\n");
put+=("\n");
put+=("\t@DeleteMapping(\"/{id}\")\n");
put+=("\tpublic responseJson delCategory(@PathVariable Long id){\n");
put+=("\t"+lose + "Service.removeById(id);\n");
put+=("\treturn new responseJson("+lose+"Service.list());\n");
put+=("\t}\n");
put+=("\n");
put+=("\t@PutMapping(\"/\")\n");
put+=("\tpublic responseJson upd(@RequestBody "+clazz+" "+lose+") {\n");
put+=("\t"+lose+"Service.updateById("+lose+");\n");
put+=("\treturn new responseJson("+lose+"Service.list());\n");
put+=("\t}\n");
put+=("\n");
put+=("\t@PatchMapping(\"/\")\n");
put+=("\tpublic responseJson select(@RequestBody Map<String,Object> "+lose+"){\n");
put+=("\treturn new responseJson("+lose+"Service.listByMap("+lose+"));\n");
put+=("\t}\n");
put+=("}\n");
// if(path==null||path.equals("")){
// path="D:\\file\\desk";
// }
String fileName=path+"\\controller\\"+clazz+"Controller.java";
try {
FileWriter fw = new FileWriter(fileName);
BufferedWriter writer = new BufferedWriter(fw);
writer.write(put);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
找到文件里面如下图四个属性
分别是
数据库,以及连接配置
dsc.setUrl
数据库驱动
dsc.setDriverName
数据库用户名
dsc.setUsername
数据库密码
dsc.setPassword
完成上面我们就也就修改完成了
最后
找到test/java/test 里面已经有我写好的启动类
public class test {
public static void main(String[] args){
autoCode.getCode("输入你自己的数据库表名");
}
}
在autoCode.getCode参数里面输入自己所需要的数据库表名字
点击运行就可以一键生成了
等待运行结果,出现如下图结果代码文件生成完成
在src/java/com/black/下面就会出现需要的数据库表的增删改查
当然最后,我们把这个直接复制过去就行
当然我我上面的common工具类最好也一起复制到你的项目,不然controller需要改一下,才能使用