Mybatis逆向工程 与 走过的坑!!
Posted nhdlb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis逆向工程 与 走过的坑!!相关的知识,希望对你有一定的参考价值。
近日我在搭建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文件路径是否正确!!切记查看正确! 作者吃了大亏……
以上是关于Mybatis逆向工程 与 走过的坑!!的主要内容,如果未能解决你的问题,请参考以下文章