什么是逆向工程
我们知道,mybatis是需要自己手写sql语句的,针对这一显现,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml、pojo等) j建好数据库sql表的结构后, 我们就可以利用逆向工程直接生成相应的Dao和JavaBean代码, 并且生成的sql语句非常好用,这样能够大大减少我们平时开发的工作量.
如何使用逆向工程生成代码
1、在eclipse中导入逆向工程的项目源码(如果是idea的话可以在eclipse中生成好在把生成的代码copy过去或者去找个idea的工程源码也行)
2、找到逆向工程的xml配置文件(一般命名为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>
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是: false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test" userId="root"
password="123456">
</jdbcConnection>
<!--<jdbcConnection driverClass="oracle.jdbc.OracleDriver"
connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:test"
userId="test"
password="test">
</jdbcConnection> -->
<!-- 默认false,把JDBC DECIMAL和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.hnkjxy.pojo"
targetProject=".\src">
<!--enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.hnkjxy.mapper"
targetProject=".\src">
<!--enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.hnkjxy.mapper"
targetProject=".\src">
<!--enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!-- 指定数据库表 -->
<table tableName="teacher" domainObjectName="Teacher"></table><!-- tableName指定表名、domainObjectName指定生成的实体类的类名 -->
<table tableName="tb_department" domainObjectName="Department"></table>
<table tableName="tb_position" domainObjectName="Position"></table>
<table tableName="tb_repair" domainObjectName="Repair"></table>
<table tableName="tb_res" domainObjectName="Res"></table>
<table tableName="tb_user" domainObjectName="User"></table>
</context>
</generatorConfiguration>
3、配置好数据库信息后找到GeneratorSqlMapper.java执行主方法即可(没有就自己建一个类就行,自己建的话注意修改下包名)
package test;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
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;
public class GeneratorSqlMapper {
public void generator() throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite =true;
File configFile = new File("src/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);
}
public static void main(String[] args) {
GeneratorSqlMapper generatorSqlMapper = new GeneratorSqlMapper();
try {
generatorSqlMapper.generator();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行的时候注意配置文件路径不要写错了哦
运行之后会在控制台看到如下结果(出现如下报红结果是因为未配置log4j属性,添加log4j.properties至src目录下(MAVEN则是resources目录下)即可)
log4j.properties代码如下
# Configure logging for testing: optionally with log file
log4j.rootLogger=DEBUG, stdout
# log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
如看到log4j报红不舒服则可以添加上诉配置文件
代码生成结果图
最后再说一下,如果自己建逆向工程的话还要注意导入相关jar包4个固定的jar包加一个数据库连接的jar包,用哪个数据库就要导哪个数据库的jar包哦!(这里使用的是mysql)
工程源码资源
最后奉上工程源码,需要可自取
CSDN地址:https://download.csdn.net/download/qq_38403662/10852062
GitHUb地址:https://github.com/jamesluozhiwei/resources.git
百度网盘地址:链接: https://pan.baidu.com/s/1z7FULtV5Ubp6F7UGYkC1DA 提取码: pvsd 复制这段内容后打开百度网盘手机App,操作更方便哦
如果自己建逆向工程的话需要jar包可去中央仓库下载或者直接下载上面所述的工程源码就行。