Mybatis-Generator

目录
  • 1.1 简介
  • 2.1 使用
    • 2.1.1 配置文件
    • 2.1.2 test测试生成

1.1 简介

MyBatis Generator简介
MyBatis生成器(MBG)是MyBatis MyBatis的代码生成器。它将为MyBatis的所有版本生成代码。它将对一个数据库表(或多个表)进行内部检查,并将生成可用于访问表的工件。这减轻了设置对象和配置文件以与数据库表进行交互的麻烦。MBG试图对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍将需要手工编写SQL和对象代码以进行联接查询或存储过程。

MBG会根据其配置方式以不同的样式和不同的语言生成代码。例如,MBG可以生成Java或Kotlin代码。MBG可以生成MyBatis3兼容的XML-尽管现在认为MBG是旧版使用。生成的代码的较新样式不需要XML。

根据其配置方式,MyBatis Generator可能会生成:

与表结构匹配的Java或Kotlin类。这可能包括:

  • 匹配表主键的类(如果有主键)
  • 一个与表的非主键字段匹配的类(BLOB字段除外)
  • 一个包含表的BLOB字段的类(如果表具有BLOB字段)
  • 一个启用动态选择,更新和删除的类

2.1 使用

环境:IDEA
1.创建数据表

/*
Navicat MySQL Data Transfer

Source Server         : mysql
Source Server Version : 80020
Source Host           : localhost:3306
Source Database       : myproject

Target Server Type    : MYSQL
Target Server Version : 80020
File Encoding         : 65001

Date: 2020-06-29 13:23:18
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for class
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
  `id` int NOT NULL,
  `classname` varchar(255) DEFAULT NULL,
  `classimage` bigint DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of class
-- ----------------------------
INSERT INTO `class` VALUES ('1', '计算机', null);
INSERT INTO `class` VALUES ('2', '软工', null);

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `uid` int DEFAULT NULL,
  `admin` int DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `phonenumber` int DEFAULT NULL,
  `classid` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `classid` (`classid`),
  CONSTRAINT `classid` FOREIGN KEY (`classid`) REFERENCES `class` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '徐浩杰', '970829', '928675426', '1', '[email protected]', '1838145982', '1');
INSERT INTO `user` VALUES ('2', '小明', '123456', '568985656', '2', '[email protected]', '1254635895', '2');

我以这两张表作为演示,看如何用Mybatis MBG逆向生成java文件。

2.1.1 配置文件

MybatisGenerator支持以下几种方式来做MBG:
Mybatis-Generator_第1张图片

我选用java(maven)这两种比较常用。
1.第一步创建generatorConfig.xml
Mybatis-Generator_第2张图片

内容如下:





    


    
        
            
            
        
        
        

        
            
        

        
            
            
        

        
            
        

        
            
        

        
            
            
            
            
        

官方模板:http://mybatis.org/generator/configreference/xmlconfig.html



这个targetRuntime属性的指定很关键,官方支持四种属性:

也就是告诉生成器采用哪种模式生成我们的java代码。


    
  • 这个标签一眼明了,配置JDBC驱动包,地址等等。

      
    
  • 这个标签作用是强制类型转换,因为mysql中有些数据类型比如date,bitint等等需要转成java 中的数据格式。

      
      
    
  • 指定pojo包位置。targetProject是指定项目位置。
  • enableSubPackages是否自动添加包名后缀。
  • trimStrings是否去除空格
 
      
    
  • 指定mapper.xml的位置

      
    
  • 指定dao包的位置


      
      
      
      
    

这里给出了一个表单逆向的模板,tableName数据库中的表名,domainObjectName指定生成的pojoclassname.(一般就这么指定就行了其他子属性可以不写)
当然你还可以指定是否开启具体的查询,插入规则:
Mybatis-Generator_第3张图片

官方api:http://mybatis.org/generator/configreference/table.html

2.1.2 test测试生成

根据官方提供的接口代码:

 @Test
    public  void mybatisGenerator() throws Exception {

        List warnings = new ArrayList();
        boolean overwrite = true;
        File configFile = new File("C:\\Users\\Administrator\\Downloads\\spring-boot-examples-master\\springboot-myfirstproject\\src\\main\\resources\\generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }

这里配置文件的位置最好用绝对路径,不然死活找不到,我也不知道为什么。。我之前直接写的generatorConfig.xml或者classpath:generatorConfig.xml。都报错找不到指定文件。

之后看生成的目录文件:
Mybatis-Generator_第4张图片
这样就自动根据数据库中的信息逆向生成我们的dao,pojo,mapper层。

PS:之前用Hiberante的时候也用到过逆向,不过Hiberante的逆向是从java代码来逆向到数据库。封装的太狠,灵活性太低。

你可能感兴趣的:(Mybatis-Generator)