⭐⭐⭐⭐⭐最最最最最重要的事情:
我自己总结的Java学习的系统知识点以及面试问题,目前已经开源,会一直完善下去,欢迎建议和指导欢迎Star: github.com/Snailclimb/…
????我的Gitchat:从应届程序员角度分析如何备战大厂面试
前言
最近做的项目(SSM+Shiro
)的数据库表已经创建完成,一共有15张表,如果我们一个个去写pojo/bean
的代码以及各种sql语句的话未免太过麻烦而且很容易出错,这个时候我们就需要MyBatis
逆向工程去为我们生成这些基本的东西。
先来简单的了解一下什么是逆向工程。
一 什么是逆向工程
官网解释浓缩版:
MyBatis
逆向工程需要用到的就是MyBatis官方提供的MyBatis Generator(MBG)
。MBG
是MyBatis
和iBATIS
的代码生成器,它将为所有版本的MyBati
s以及版本2.2.0之后的iBATIS
版本生成代码。MBG
对简单CRUD(增删改查
)的大部分数据库操作产生重大影响。但是您仍然需要为连接查询或存储过程手动编写SQL和对象代码。
简要概括版:
创建好数据库表之后,MBG
可以根据数据库表自动为您生成pojo类
、example类(用于添加条件,相当where语句后面的部分 )
、mapper文件
。
关于Mapper接口以及Example的实例的讲解可以查看这一篇文章:《Mapper接口以及Example的实例》 blog.csdn.net/biandous/ar…
介绍完逆向工程是个什么东西后,接下来我们就要开始学习如何使用它了?
二 使用MyBatis逆向工程
考虑到大家的基础可能不同,所以我尽可能详细一点。
2.1 新建Maven项目并添加相关依赖
1.新建Maven项目(普通的Java项目):
2.添加相关依赖(pom.xml):
<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.0modelVersion>
<groupId>mybatis-generatorgroupId>
<artifactId>sql-mapperartifactId>
<version>0.0.1-SNAPSHOTversion>
<packaging>jarpackaging>
<name>sql-mappername>
<url>http://maven.apache.orgurl>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
properties>
<dependencies>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
<dependency>
<groupId>org.mybatis.generatorgroupId>
<artifactId>mybatis-generator-coreartifactId>
<version>1.3.5version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.38version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.2.1version>
dependency>
dependencies>
project>
复制代码
2.2 项目创建完成之后的目录结构
2.3 MyBatis逆向工程代码编写
核心代码官网已经给出,地址为:www.mybatis.org/generator/r…
核心代码示例(推荐读取xml配置文件的形式,还有一种基于Java的配置这里就不做演示):
List warnings = new ArrayList();
boolean overwrite = true;
//读取xml配置文件,推荐使用这种方式
File configFile = new File("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);
复制代码
本项目中使用代码MyBatisGeneratorApp.java:
public class MyBatisGeneratorApp {
public void generator() throws Exception{
List warnings = new ArrayList();
boolean overwrite = true;
//指定 逆向工程配置文件
File configFile = new File("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) throws Exception {
try {
MyBatisGeneratorApp generatorSqlmap = new MyBatisGeneratorApp();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
复制代码
2.4 MyBatis逆向工程配置文件以及log4j配置文件编写
MyBatis GeneratorXML参考配置文件官网已经给出,地址为:www.mybatis.org/generator/c…
MyBatis逆向工程配置文件如下(注释已经解释的很详细了,我这里就不多做解释了):
xml version="1.0" encoding="UTF-8"?>
<generatorConfiguration>
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="true" />
commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/kpi_project?useSSL=false"
userId="root" password="xxx">
jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
javaTypeResolver>
<javaModelGenerator targetPackage="pojo"
targetProject=".\src\main\java">
<property name="enableSubPackages" value="false" />
<property name="trimStrings" value="true" />
javaModelGenerator>
<sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\java">
<property name="enableSubPackages" value="false" />
sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER"
targetPackage="mapper" targetProject=".\src\main\java">
<property name="enableSubPackages" value="false" />
javaClientGenerator>
<table schema="" tableName="com_role">table>
<table schema="" tableName="com_rule">table>
<table schema="" tableName="kpi_assess">table>
<table schema="" tableName="kpi_assign">table>
<table schema="" tableName="kpi_complain">table>
<table schema="" tableName="kpi_index">table>
<table schema="" tableName="kpi_institute">table>
<table schema="" tableName="kpi_peformance">table>
<table schema="" tableName="kpi_result">table>
<table schema="" tableName="kpi_score">table>
<table schema="" tableName="sys_permission">table>
<table schema="" tableName="sys_role">table>
<table schema="" tableName="sys_role_perm">table>
<table schema="" tableName="sys_user">table>
<table schema="" tableName="sys_user_role">table>
context>
generatorConfiguration>
复制代码
我的log4j的配置文件如下:
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
复制代码
2.5 运行结果
pojo及example类:
mapper接口及mapper.xml:
我们已经介绍了MyBatis逆向工程以及它的使用,下面我们简单的总结与补充一下所学的知识。
三 总结
-
什么是逆向工程?
MBG
可以根据数据库表自动为您生成
pojo类、
example类(用于添加条件,相当where语句后面的部分 )、
mapper文件`。 -
如何使用逆向工程?
pom文件(添加相关jar包)->逆向工程核心代码编写->创建generatorConfig.xml配置文件(可以加上log4j日志打印配置文件)
如果你觉得我的文章对你有帮助话,欢迎关注我的微信公众号:"Java面试通关手册"(一个有温度的微信公众号,无广告,单纯技术分享,期待与你共同进步~~~坚持原创,分享美文,分享各种Java学习资源。)