完善了一下mbatis-plus一键生成工具,一键生成CRUD

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需要改一下,才能使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Black Jun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值