基于Mybatis plus 自动代码生成器的实现代码

1.使用的是maven项目,添加依赖

<!-- mybatis-plus begin -->
   <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus</artifactId>
     <version>2.2.0</version>
   </dependency> 

还有数据库的连接

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>compile</scope>
</dependency> 

最后是源码

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.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.jupiter.api.Test;
/**
 * mybatis-plus 自动生成代码
 *
 * @author Terry
 * @version 1.0
 * @date 2018-05-16 09:35
 */
public class SimpleMp {
  @Test
  public void generateCode() {
    //指定包名
    String packageName = "com.hciot.hhhh";
    //user -> UserService, 设置成true: user -> IUserService
    boolean serviceNameStartWithI = false;
    //指定生成的表名
    String[] tableNames = new String[]{"data_air_sensor_co", "order_product", "relation_device_gateway"};
    generateByTables(serviceNameStartWithI, packageName, tableNames);
  }
  /**
   * 根据表自动生成
   *
   * @param serviceNameStartWithI 默认为false
   * @param packageName      包名
   * @param tableNames      表名
   * @author Terry
   */
  private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {
    //配置数据源
    DataSourceConfig dataSourceConfig = getDataSourceConfig();
    // 策略配置
    StrategyConfig strategyConfig = getStrategyConfig(tableNames);
    //全局变量配置
    GlobalConfig globalConfig = getGlobalConfig(serviceNameStartWithI);
    //包名配置
    PackageConfig packageConfig = getPackageConfig(packageName);
    //自动生成
    atuoGenerator(dataSourceConfig, strategyConfig, globalConfig, packageConfig);
  }
  /**
   * 集成
   *
   * @param dataSourceConfig 配置数据源
   * @param strategyConfig  策略配置
   * @param config      全局变量配置
   * @param packageConfig  包名配置
   * @author Terry
   */
  private void atuoGenerator(DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig, GlobalConfig config, PackageConfig packageConfig) {
    new AutoGenerator()
        .setGlobalConfig(config)
        .setDataSource(dataSourceConfig)
        .setStrategy(strategyConfig)
        .setPackageInfo(packageConfig)
        .execute();
  }
  /**
   * 设置包名
   *
   * @param packageName 父路径包名
   * @return PackageConfig 包名配置
   * @author Terry
   */
  private PackageConfig getPackageConfig(String packageName) {
    return new PackageConfig()
        .setParent(packageName)
        .setXml("mapper")
        .setMapper("dao")
        .setController("controller")
        .setEntity("entity");
  }
  /**
   * 全局配置
   *
   * @param serviceNameStartWithI false
   * @return GlobalConfig
   * @author Terry
   */
  private GlobalConfig getGlobalConfig(boolean serviceNameStartWithI) {
    GlobalConfig globalConfig = new GlobalConfig();
    globalConfig
        .setBaseColumnList(true)
        .setBaseResultMap(true)
        .setActiveRecord(false)
        .setAuthor("Terry")
        //设置输出路径
        .setOutputDir(getOutputDir("mybatis-plus"))
        .setFileOverride(true);
    if (!serviceNameStartWithI) {
      //设置service名
      globalConfig.setServiceName("%sService");
    }
    return globalConfig;
  }
  /**
   * 返回项目路径
   *
   * @param projectName 项目名
   * @return 项目路径
   * @author Terry
   */
  private String getOutputDir(String projectName) {
    String path = this.getClass().getClassLoader().getResource("").getPath();
    int index = path.indexOf(projectName);
    return path.substring(1, index) + projectName + "/src/main/java/";
  }
  /**
   * 策略配置
   *
   * @param tableNames 表名
   * @return StrategyConfig
   * @author Terry
   */
  private StrategyConfig getStrategyConfig(String... tableNames) {
    return new StrategyConfig()
        // 全局大写命名 ORACLE 注意
        .setCapitalMode(true)
        .setEntityLombokModel(false)
        // 表名、字段名、是否使用下划线命名(默认 false)
        .setDbColumnUnderline(true)
        //从数据库表到文件的命名策略
        .setNaming(NamingStrategy.underline_to_camel)
        //需要生成的的表名,多个表名传数组
        .setInclude(tableNames);
  }
  /**
   * 配置数据源
   *
   * @return 数据源配置 DataSourceConfig
   * @author Terry
   */
  private DataSourceConfig getDataSourceConfig() {
    String dbUrl = "jdbc:mysql://localhost:3306/test";
    return new DataSourceConfig().setDbType(DbType.MYSQL)
        .setUrl(dbUrl)
        .setUsername("root")
        .setPassword("root")
        .setDriverName("com.mysql.jdbc.Driver");
  }
  /**
   * 根据表自动生成
   *
   * @param packageName 包名
   * @param tableNames 表名
   * @author Terry
   */
  @SuppressWarnings("unused")
  private void generateByTables(String packageName, String... tableNames) {
    generateByTables(true, packageName, tableNames);
  }
} 

总结

以上所述是小编给大家介绍的基于Mybatis plus 自动代码生成器的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 详解Spring boot上配置与使用mybatis plus

    http://mp.baomidou.com/#/?id=%e7%ae%80%e4%bb%8b这个是mybatisplus的官方文档,上面是mybtisplus的配置使用方法,以及一些功能的介绍 下面开始配置 maven依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <

  • mybatis plus代码生成器配置过程解析

    这篇文章主要介绍了mybatis plus代码生成器配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近在玩项目,发现自己写严重浪费时间~于是想到了代码生成器,之前用过一次的mybatis-plus,再重新实现了一下 确保修改好对应的配置即可 依赖: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boo

  • SpringBoot整合MyBatis-Plus3.1教程详解

    一.说明 Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑.并且只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间.代码生成,分页,性能分析等功能一应俱全,最新已经更新到了3.1.1版本了,3.X系列支持lambda语法,让我在写条件构造的时候少了很多的"魔法值",从代码结构上更简洁了. 二.项目环境 MyBatis-Plus版本: 3.1.0 SpringBoot版本:2.1.5 JDK

  • Mybatis-Plus 多表联查分页的实现代码

    上一节,简单讲述了 Mybatis-Plus 搭建与使用入门,这一节,简单讲一下如何使用 MP 实现多表分页. 分析 使用的工程,依旧是 spring-boot,关于分页,官网给出了一个单表的demo,其实多表分页实现原理相同,都是通过 mybatis 的拦截器 (拦截器做了什么?他会在你的 sql 执行之前,为你做一些事情,例如分页,我们使用了 MP 不用关心 limit,拦截器为我们拼接.我们也不用关心总条数,拦截器获取到我们 sql 后,拼接 select count(*) 为我们查询总条

  • 结合mybatis-plus实现简单不需要写sql的多表查询

    项目地址: GITHUB (本地下载) java mybatis 多表查询 简介 实现简单的实体类操作多表,  首先你的项目是使用了mybatis-plus 才可以使用 设计说明 如何关联表? 找第一张表注解为 TableId (mybatis-plus 注解)的属性名, 到每二张表找同样的属性名, 如果没找到,反过来找,如果还没找到,挨个属性找.以此类推,实现关联的前提条件是 主从表的关联例名必须一样 // user 表 @TableId private Integer userId // a

  • MyBatisPlus 自定义sql语句的实现

    一.引言 Good Good Study,Day Day Up MP自带的条件构造器虽然很强大,有时候也避免不了写稍微复杂一点业务的sql,那么那么今天说说MP怎么自定义sql语句吧. 二.配置 自定义的sql当然是写在XML文件中的啦,那么首先来定义xml文件的位置,在yml配置文件如下 mybatis-plus: # 如果是放在src/main/java目录下 classpath:/com/*/*/mapper/*Mapper.xml # 如果是放在resource目录 classpath:

  • Mybatis-Plus 搭建与使用入门(小结)

    Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 中文文档 :http://baomidou.oschina.io/mybatis-plus-doc/#/ 本文介绍包括 1)如何搭建 2)代码生成(controller.service.mapper.xml) 3)单表的CRUD.条件查询.分页 基类已经为你做好了 一.如何搭建 1. 首先我们创建一个 springboot 工程 --> https:/

  • 基于Mybatis plus 自动代码生成器的实现代码

    1.使用的是maven项目,添加依赖 <!-- mybatis-plus begin --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.2.0</version> </dependency> 还有数据库的连接 <dependency> <

  • 基于Mybatis Plus实现代码生成器CodeGenerator

    导入生成器需要的依赖坐标: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>org.apache.velocity</gro

  • 基于Mybatis Plus实现多表分页查询的示例代码

    注意:Mybatis Plus 3.0.7 版本才开始用[自定义sql]+[QueryWrapper],低版本不能使用,还是老实写SQL进行条件拼接 1.源码分析 在Wrapper<T>接口中就有如下方法 /** * 获取自定义SQL 简化自定义XML复杂情况 * 使用方法:自定义sql + ${ew.customSqlSegment} * 1.逻辑删除需要自己拼接条件 (之前自定义也同样) * 2.不支持wrapper中附带实体的情况 (wrapper自带实体会更麻烦) * 3.用法 ${e

  • Springboot Mybatis Plus自动生成工具类详解代码

    前言 代码生成器,也叫逆向工程,是根据数据库里的表结构,自动生成对应的实体类.映射文件和接口. 看到很多小伙伴在为数据库生成实体类发愁,现分享给大家,提高开发效率. 一.pom依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> &

  • Mybatis结果集自动映射的实例代码

    在使用Mybatis时,有的时候我们可以不用定义resultMap,而是直接在<select>语句上指定resultType.这个时候其实就用到了Mybatis的结果集自动映射.Mybatis的自动映射默认是开启的,有需要我们也可以将其关闭(还可以调整自动映射的策略). 1       Mybatis结果集自动映射 在使用Mybatis时,有的时候我们可以不用定义resultMap,而是直接在<select>语句上指定resultType.这个时候其实就用到了Mybatis的结果集

  • MyBatis框架之mybatis逆向工程自动生成代码

    Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件. 逆向工程 1.什么是逆向工程 mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml.po..) 企业实际开发中,常用的逆向工程方式: 由于数据库的表生成java代码. 2.下载逆向工程 my

  • 详解MyBatis Generator自动创建代码(dao,mapping,poji)

    连接的数据库为SQL server2008,所以需要的文件为sqljdbc4.jar 使用的lib库有: 在lib库目录下新建一个src文件夹用来存放生成的文件,然后新建generatorConfig.xml 里面代码为: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis G

  • 详解使用MyBatis Generator自动创建代码

    这两天需要用到MyBatis的代码自动生成的功能,由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类.DAO接口和Mapping映射文件.这样可以省去很多的功夫,将生成的代码copy到项目工程中即可. 1. 目录说明 使用自动生成有很多方式,可以在eclipse中安装插件,但是以下将要介绍的这种方式我认为很轻松,最简单,不需要装插件,只需要下几个jar包即可,把它们放在一个目录下

  • Spring和MyBatis整合自动生成代码里面text类型遇到的坑

    Spring和MyBatis整合以后,使用自动生成代码工具生成dao和mapper配置文件,生成步骤如下(以Intelli idea为例). 1.编写生成代码配置文件generatorConfig.xml. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator

  • IDEA Maven Mybatis generator 自动生成代码(实例讲解)

    IDEA Maven Mybatis generator 自动生成代码的实例讲解 一.安装配置maven以及在Idea中配置maven 安装过程步骤可以看上面的博文,里面介绍得很详细. 二.建数据表 DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` varchar(100) NOT NULL, `username` varchar(20) DEFAULT NULL, `password` varchar(20) DEFAULT

随机推荐