近日我在搭建springboot+mybatis+mysql 的整合项目(自己测试玩)的时候用到了mybatis的逆向工程,来这里记录一下我的菜鸟编码过程

首先我在maven中引入这些依赖

<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>

这里的org.mybatis.generator是mybatis的自动生成类的工具,我的是generator-1.3.5搭配mysql-5.1.44

项目模块截图:

在resources文件下创建一个generatorConfig.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<!-- 引入配置文件 -->
<properties resource="application.properties"/> <!-- 一个数据库一个context -->
<context id="MysqlContext">
<!-- 注释 -->
<commentGenerator >
<property name="suppressAllComments" value="false"/><!-- 是否取消注释 -->
<property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->
</commentGenerator> <!-- jdbc连接 -->
<jdbcConnection driverClass="${spring.datasource.driver-class-name}"
connectionURL="${spring.datasource.url}" userId="${spring.datasource.username}"
password="${spring.datasource.password}" /> <!-- 类型转换 -->
<javaTypeResolver>
<!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver> <!-- 生成实体类地址 targetPackage是指定生成的路径 targetProject是项目的相对路径-->
<javaModelGenerator targetPackage="com.boot.model"
targetProject="src\main\java" >
<!-- 是否在当前路径下新加一层schema,eg:fase -->
<property name="enableSubPackages" value="false"/>
<!-- 是否针对string类型的字段在set的时候进行trim调用 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator> <!-- 生成mapxml文件 targetPackage是指定生成的路径 targetProject是项目的相对路径-->
<sqlMapGenerator targetPackage="com.boot.dao.mapper"
targetProject="src\main\java" >
<!-- 是否在当前路径下新加一层schema,eg:fase -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator> <!-- 生成mapxml对应client,也就是接口dao targetPackage是指定生成的路径 targetProject是项目的相对路径-->
<javaClientGenerator targetPackage="com.boot.dao.mapper"
targetProject="src\main\java" type="XMLMAPPER" >
<!-- 是否在当前路径下新加一层schema,eg:fase -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator> <!-- 配置表信息 -->
<table schema="test" tableName="user"
domainObjectName="UserDataBase" enableCountByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
enableUpdateByExample="false">
<!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName是要生成的实体类 enable*ByExample
是否生成 example类 --> <!-- 忽略列,不生成bean 字段 -->
<!--<ignoreColumn column="FRED" />-->
<!-- 指定列的java数据类型 -->
<!--<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />-->
</table> </context>
</generatorConfiguration>

在generatorConfig.xml文件中有引用application.properties文件内的值,所以我们还需要在resources文件下建一个application.properties文件

application.properties:

server.port=8082

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=******

接下来就是编写一个Generator的生成实体的类来进行运行

package com.boot;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.util.ArrayList;
import java.util.List; public class Generator {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("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);
}
}

  

本地运行编写的Generator类,就会自动生成相应的实体,mapper,mapper.XML了。

这是我的后台输出:

刷新一下项目就可以看到生成的类和mapper文件了。

重点注意:

1.数据库连接错误!

报错信息:

For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'.
You need either to explicitly disable SSL by setting useSSL=false, or
set useSSL=true and provide truststore for server certificate verification.

解决办法: 

在mysql连接字符串url中加入ssl=true或者false即可,如下所示。
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false

2.日志正常输出!但是没有生成文件!!

首先要查看generator.xml文件的javaModelGenerator、sqlMapGenerator、javaClientGenerator标签内的 targetPackage、targetProject属性是否写对!!

如果正确在查看编写的Generator类内File文件路径是否正确!!切记查看正确! 作者吃了大亏……

最新文章

  1. Android开发环境(IDE)
  2. i18n国际化
  3. 模拟Executor策略的实现
  4. noi2006day2_最大获利 网络流
  5. C# PageLayoutControl的基本操作
  6. C#常见算法题目(面试准备)
  7. [Javascript] Creating an Immutable Object Graph with Immutable.js Map()
  8. asp.net+Sqlserver 通过存储过程读取数据
  9. junit忽略测试方法
  10. react 20180504
  11. mp4文件解析(纯c解析代码)
  12. 解析 ViewTreeObserver 源码(下)
  13. ubuntu1604使用之旅——软件源更新(vim安装)
  14. OpenGL——二维几何变换
  15. python中pass语句的作用是什么
  16. 第六篇:Jmeter Ftp服务器的连接
  17. C# Log4net根据日志等级输出到不同文件
  18. 各大公司Java面试题超详细总结
  19. Jenkins服务器磁盘空间爆满问题解决
  20. jmeter 正则表达式提取

热门文章

  1. 就算是3.0的U盘,写入速度10M及以下也是正常的,U盘用很差的闪存颗粒的话就算10Gbps的USB3.1也是很慢的。
  2. IT菜鸟之总结(Du teacher)
  3. JRebel插件使用详解(IDEA热部署)(Day_44)
  4. Java并发之AQS原理剖析
  5. HTTP状态 500 - 内部服务器错误之Could not open ServletContext resource [/db.properties]或者 [/mybatis.xml]
  6. Linux将一个文件夹或文件夹下的所有内容复制到另一个文件夹
  7. 获取两个时间点间的随机时间&amp;时间戳
  8. Manjaro Linux安装singularity-container
  9. Dockerfile构建实践
  10. 工作流Activiti框架中的LDAP组件使用详解!实现对工作流目录信息的分布式访问及访问控制