最近项目差不多快上线了,终于有空搭建下Springboot Mybatis逆向工程了,但是百度了半天网上就两篇原创,其余的写着原创但是连错别字都一样。尝试了搭建下各种报错。最后还是自己研究了半天一点点试的,并没有网上说的这么繁琐,也不用继承模板什么的。当然这只是我个人的尝试,给大家提供一下第三种思路。
Mybatis逆向工程使用逆向生成工具:mybatis-generator,使用此插件可以从数据库生成指定表格对应的实体类、mapper接口以及对应的xml文件(包含一些常用的方法实现)
一、首先是通过Maven添加必须的的jar包以及插件,配置如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Orcale Jdbc驱动 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2</version>
</dependency>
<!-- SpringBoot - MyBatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!-- SpringBoot - MyBatis 逆向工程 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- MyBatis 逆向工程 插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<!--插件依赖的jar包-->
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2</version>
</dependency>
</dependencies>
<configuration>
<!--允许移动生成的文件-->
<verbose>true</verbose>
<!--允许覆盖生成的文件-->
<overwrite>true</overwrite>
<!--配置文件的路径 默认resources目录下-->
<configurationFile>src/main/resources/config/generatorConfig.xml</configurationFile>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
</project>
我用的是oracle的连接,mysql的童鞋要注意换jar包哟
二、然后新建配置文件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="jdbc.properties" />
<!-- 用户相关 -->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- 数据库连接-->
<jdbcConnection driverClass="${jdbc.driverClassName}"
connectionURL="${jdbc.url}"
userId= "${jdbc.username}"
password= "${jdbc.password}">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--指定javaBean生成的位置 javaBean生成的位置-->
<javaModelGenerator targetPackage="com.kayak.demo.mybatis.entity" targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--sql映射文件生成的位置-->
<sqlMapGenerator targetPackage="com.kayak.demo.mybatis.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--指定dao接口生成的位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.kayak.demo.mybatis.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--table是指定每个表的生成策略 生成对应表及类名-->
<table tableName="sys_user" domainObjectName="sysUser"></table>
</context>
</generatorConfiguration>
各个配置都有注释,按照上面略微改下参数就可以用了
然后是我的jdbc.properties配置了
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@//127.0.0.1:1521/test
jdbc.username=root
jdbc.password=root
配置完这些,然后启动就可以启动mybatis-generator插件
idea启动
ecilpse启动
*注意点:
1.使用idea的mybatis-generator插件生成,但是同样配置用ecilpse插件mybatis-generator 生成的话,可能会报
Exception getting JDBC Driver 错误
解决方法:
需要在generatorConfig.xml 添加
<classPathEntry
location="E:\maven\repository\com\oracle\ojdbc14\10.2\ojdbc14-10.2.jar" />
2、同样配置用ecilpse插件mybatis-generator 生成的话,可能会报
Project src does not exist 错误
解决方法:
需要在generatorConfig.xml 修改
指定生成目录 targetProject配置加上项目名
<javaModelGenerator targetPackage="com.kayak.demo.mybatis.entity" targetProject="
demo/src/main/java">
启动后就会在目录下自动生成文件。
本人亲测,是可以运行的,如果有什么疏漏错误也望指正~!