最近在学习mybatis框架,虽然已经简化了一些Dao代码,但是还想更上一层楼吗?不再被基本的pojo层,controller层,service层,dao层基本重复代码所困恼吗?这里,让我们来学习一下mybatis plus生成器吧,实现mybatis的逆向工程,最好是以springboot结合。

一、导入maven依赖,注意版本,以及编写生成器主类

<!--springboot使用mybatis-plus,所需要的2个依赖jar包-->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus</artifactId>
      <version>2.1.9</version>
    </dependency>
    <dependency>
      <!--mybatis自动装配必须要-->
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-autoconfigure</artifactId>
      <version>1.3.2</version>
    </dependency>
 1 package com.ljg.generator;
 2 
 3 
 4 import com.baomidou.mybatisplus.enums.IdType;
 5 import com.baomidou.mybatisplus.generator.AutoGenerator;
 6 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
 7 import com.baomidou.mybatisplus.generator.config.GlobalConfig;
 8 import com.baomidou.mybatisplus.generator.config.PackageConfig;
 9 import com.baomidou.mybatisplus.generator.config.StrategyConfig;
10 import com.baomidou.mybatisplus.generator.config.rules.DbType;
11 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
12 
13 import java.sql.SQLException;
14 
15 public class MyBatisPlusGenerator {
16 
17     public static void main(String[] args) throws SQLException {
18         String tableName="user";//表名,记得创建号数据库表哦
19         AutoGenerator mpg = new AutoGenerator();
20         // 选择 freemarker 引擎,默认 Veloctiy
21         //1. 全局配置
22         GlobalConfig config = new GlobalConfig();
23         config.setActiveRecord(true) // 是否支持AR模式
24                 .setAuthor("Ljg") // 作者
25                 .setEnableCache(false)// XML 二级缓存
26                 .setOutputDir("D:\\IdeaProject\\mybatis_plus_demo\\src\\main\\java") // 生成路径
27                 .setFileOverride(true)  // 文件覆盖
28                 .setIdType(IdType.AUTO) // 主键策略
29                 .setBaseResultMap(true)//生成基本的resultMap
30                 .setBaseColumnList(true)//生成基本的SQL片段
31         /* 自定义文件命名,注意 %s 会自动填充表实体属性! */
32                  .setMapperName("I%sDao")
33                  .setXmlName("I%sDao")
34                  .setServiceName("I%sService")
35                  .setServiceImplName("%sServiceImpl")
36                  .setControllerName("%sController");
37                  mpg.setGlobalConfig(config);
38 
39         //2. 数据源配置
40         DataSourceConfig dsConfig = new DataSourceConfig();
41         dsConfig.setDbType(DbType.MYSQL)  // 设置数据库类型
42                 .setDriverName("com.mysql.jdbc.Driver")
43                 .setUrl("jdbc:mysql://172.1.10.24/zz?useUnicode=true&characterEncoding=utf-8")
44                 .setUsername("root")
45                 .setPassword("123456");
46                 mpg.setDataSource(dsConfig);
47 
48         //3. 策略配置globalConfiguration中
49         StrategyConfig stConfig = new StrategyConfig();
50         stConfig.setCapitalMode(true) //全局大写命名
51                 .setDbColumnUnderline(true)  // 指定表名 字段名是否使用下划线
52                 .setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略
53                 //.setTablePrefix("tbl_")//表名前缀
54                 .setInclude(tableName);  // 需要生成的表
55 
56         //4. 包名策略配置
57         PackageConfig pkConfig = new PackageConfig();
58         pkConfig.setParent("com.ljg")
59                 .setMapper("dao")//dao
60                 .setService("service")//servcie
61                 .setController("controller")//controller
62                 .setEntity("po")
63                  .setXml("mappper");//配置文件mapper/xml
64 
65         //5. 整合配置
66         AutoGenerator ag = new AutoGenerator();
67         ag.setGlobalConfig(config)
68                 .setDataSource(dsConfig)
69                 .setStrategy(stConfig)
70                 .setPackageInfo(pkConfig);
71 
72         //6. 执行
73         ag.execute();
74     }
75 }

二、执行结果:

一键构成三层架构:controller层、service层,dao层,以及mybatis.xml文件。