SpringBoot2.x整合Mybatis Plus代码生成器

简介

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

SpringBoot整合MP代码生成器

1)引入依赖pom.xml

<dependencies>
      <dependency>
          <groupId>org.springframework.bootgroupId>
          <artifactId>spring-boot-starter-testartifactId>
          <scope>testscope>
      dependency>
      <dependency>
          <groupId>mysqlgroupId>
          <artifactId>mysql-connector-javaartifactId>
          <scope>runtimescope>
      dependency>
      <dependency>
          <groupId>com.baomidougroupId>
          <artifactId>mybatis-plus-boot-starterartifactId>
          <version>3.3.2version>
      dependency>
      <dependency>
          <groupId>com.baomidougroupId>
          <artifactId>mybatis-plus-generatorartifactId>
          <version>3.3.2version>
      dependency>
      <dependency>
          <groupId>org.freemarkergroupId>
          <artifactId>freemarkerartifactId>
          <version>2.3.28version>
      dependency>
      <dependency>
          <groupId>org.projectlombokgroupId>
          <artifactId>lombokartifactId>
          <optional>trueoptional>
      dependency>
      <dependency>
          <groupId>org.freemarkergroupId>
          <artifactId>freemarkerartifactId>
      dependency>
      <dependency>
          <groupId>log4jgroupId>
          <artifactId>log4jartifactId>
          <version>1.2.17version>
      dependency>
dependencies>

2)新建模板文件
SpringBoot2.x整合Mybatis Plus代码生成器_第1张图片
也可以从jar中直接获取,然后修改成自己需要的内容模板即可
SpringBoot2.x整合Mybatis Plus代码生成器_第2张图片
本文我们使用的是freemarker模板

3)生成器代码

public class MpGenerator {
     

    private static Logger logger = LoggerFactory.getLogger(MpGenerator.class);
    private static final String PACK = "F:\\test\\";
    private static final String DB_URL = "jdbc:mysql://localhost:3306/tiku?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8";
    private static final String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "123456";

    private static String modulesName = "告警误报记录";

    public static String scanner(String tip) {
     
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append("请输入" + tip + ":");
        System.out.println(help.toString());
        if (scanner.hasNext()) {
     
            String ipt = scanner.next();
            if (StringUtils.isNotEmpty(ipt)) {
     
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }

    public static void main(String[] args) {
     
        AutoGenerator mpg = new AutoGenerator();
        //全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setBaseResultMap(true); //使用resultMap返回结果集
        gc.setIdType(IdType.ASSIGN_ID); //基本的字段映射
        gc.setBaseColumnList(true); //基本的sql片段
        gc.setSwagger2(false); //开启Swagger2
        gc.setFileOverride(true); //是否覆盖已有文件
        gc.setOutputDir(PACK); //文件输出目录
        gc.setAuthor("fyy"); //作者名称
        gc.setOpen(false); //是否打开文件目录
        gc.setEnableCache(true); //开启xml二级缓存
        gc.setControllerName("%sController"); //设置controller层bean名称
        gc.setServiceImplName("%sServiceImpl"); //设置server.impl层bean名称
        gc.setServiceName("I%sService"); //设置server层bean名称
        gc.setXmlName("%sMapper"); //设置mapper层bean名称
        gc.setMapperName("%sDao"); //设置dao层bean名称
        mpg.setGlobalConfig(gc);
        //数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl(DB_URL); //数据库连接
        dsc.setDriverName(DRIVER_NAME); //驱动类
        dsc.setUsername(USERNAME); //数据库用户名
        dsc.setPassword(PASSWORD); //数据库连接密码
        mpg.setDataSource(dsc);
        //包设置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.fyy"); //包名
        pc.setEntity("model"); //pojo包
        pc.setXml("mapper"); //mapper包
        pc.setController("controller"); //controller包
        pc.setService("service"); //service包
        pc.setServiceImpl("service.impl"); //service.impl包
        String models = scanner("模块名");
        pc.setModuleName(models);//父包模块名
        mpg.setPackageInfo(pc);
        //注入初始化配置
        setTemplateMapper(mpg, models);
        //策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel); //数据库表映射到实体的命名策略
        strategy.setColumnNaming(NamingStrategy.underline_to_camel); //数据库表字段映射到实体的命名策略, 未指定按照 naming 执行
        strategy.setEntityLombokModel(true); //使用lombok
        strategy.setInclude(scanner("表名")); //需要生成的表 "tbl_dept","tbl_file"
        strategy.setControllerMappingHyphenStyle(true); //驼峰转连字符
        strategy.setEntityColumnConstant(false); //是否生成字段常量,默认:false
        strategy.setRestControllerStyle(true); //生成 @RestController 控制器
        mpg.setStrategy(strategy);
        //模板设置
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        TemplateConfig tc = new TemplateConfig();
        tc.setController("/templates/mp/controller.java");
        tc.setService("/templates/mp/service.java");
        tc.setServiceImpl("/templates/mp/serviceImpl.java");
        tc.setEntity("/templates/mp/entity.java");
        tc.setMapper("/templates/mp/mapper.java");
        tc.setXml("/templates/mp/mapper.xml");
        mpg.setTemplate(tc);
        mpg.execute();

    }

    private static void setTemplateMapper(AutoGenerator mpg, String models) {
     
        String modulesUp = models.substring(0, 1).toUpperCase() + models.substring(1);
        InjectionConfig cfg = new InjectionConfig() {
     
            @Override
            public void initMap() {
     
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("modulesName", modulesName);
                map.put("modulesApi",models);
                map.put("modules",modulesUp);
                this.setMap(map);
            }
        };
        mpg.setCfg(cfg);
    }

}

4)测试,运行项目
依次输入项目模块名称及要生成的数据库表名称
SpringBoot2.x整合Mybatis Plus代码生成器_第3张图片
运行结果:
在这里插入图片描述
5)代码查看

  • user.java
@Data
@EqualsAndHashCode(callSuper = false)
public class User implements Serializable {
     

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Integer id;

    private String name;

    private String age;

    private String email;


}
  • UserMapper.xml


<mapper namespace="com.fyy.system.mapper.UserDao">

    
    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>

    
    <resultMap id="BaseResultMap" type="com.fyy.system.model.User">
        <id column="id" property="id" />
        <result column="name" property="name" />
        <result column="age" property="age" />
        <result column="email" property="email" />
    resultMap>

    
    <sql id="Base_Column_List">
        id, name, age, email
    sql>

mapper>
  • UserDao.java
public interface UserDao extends BaseMapper<User> {
     

}
  • IUserService.java
public interface IUserService extends IService<User> {
     

}
  • UserServiceImpl.java
@Service
public class UserServiceImpl extends ServiceImpl<UserDao, User> implements IUserService {
     

}
  • UserController.java
@RestController
@RequestMapping("/system/user")
public class UserController {
     
   private static Logger logger = LoggerFactory.getLogger(UserController.class);
}

代码分享:SpringBoot2.x整合Mybatis Plus代码生成器

你可能感兴趣的:(MyBatis,mybatis,mysql,spring,boot)