回顾一下MyBatis逆向工程——自动生成代码

栏目: 数据库 · 发布时间: 7年前

内容简介:我自己总结的Java学习的系统知识点以及面试问题,目前已经开源,会一直完善下去,欢迎建议和指导欢迎Star:最近做的项目(先来简单的了解一下什么是逆向工程。

:star::star::star::star::star:最最最最最重要的事情:

我自己总结的 Java 学习的系统知识点以及面试问题,目前已经开源,会一直完善下去,欢迎建议和指导欢迎Star: github.com/Snailclimb/…

前言

最近做的项目( SSM+Shiro )的数据库表已经创建完成,一共有15张表,如果我们一个个去写 pojo/bean 的代码以及各种 sql 语句的话未免太过麻烦而且很容易出错,这个时候我们就需要 MyBatis 逆向工程去为我们生成这些基本的东西。

先来简单的了解一下什么是逆向工程。

一 什么是逆向工程

官网解释浓缩版:

MyBatis 逆向工程需要用到的就是MyBatis官方提供的 MyBatis Generator(MBG)MBGMyBatisiBATIS 的代码生成器,它将为所有版本的 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项目):

回顾一下MyBatis逆向工程——自动生成代码

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.0</modelVersion>

	<groupId>mybatis-generator</groupId>
	<artifactId>sql-mapper</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>sql-mapper</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<!--log4j -->
		<!-- https://mvnrepository.com/artifact/log4j/log4j -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
		<!--MyBatis Generator -->
		<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.5</version>
		</dependency>
		<!--mysql-connector-java -->
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.38</version>
		</dependency>
		<!--mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.1</version>
		</dependency>
	</dependencies>
</project>

复制代码

2.2 项目创建完成之后的目录结构

回顾一下MyBatis逆向工程——自动生成代码

2.3 MyBatis逆向工程代码编写

核心代码官网已经给出,地址为: www.mybatis.org/generator/r…

核心代码示例(推荐读取xml配置文件的形式,还有一种基于Java的配置这里就不做演示):

List<String> warnings = new ArrayList<String>();
   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<String> warnings = new ArrayList<String>();
		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"?>
<!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>
		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 ,加上“useSSL=false”是因为我SSL连接数据库出现了错误 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/kpi_project?useSSL=false"
			userId="root" password="xxx">
		</jdbcConnection>
		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 
			和 NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- targetProject:生成pojo类的位置 -->
		<javaModelGenerator targetPackage="pojo"
			targetProject=".\src\main\java">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>

		<!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\java">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>

		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="mapper" targetProject=".\src\main\java">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<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类:

回顾一下MyBatis逆向工程——自动生成代码

mapper接口及mapper.xml:

回顾一下MyBatis逆向工程——自动生成代码

我们已经介绍了MyBatis逆向工程以及它的使用,下面我们简单的总结与补充一下所学的知识。

三 总结

  • 什么是逆向工程?

    MBG 可以根据数据库表自动为您生成 pojo类 example类(用于添加条件,相当where语句后面的部分 ) mapper文件`。

  • 如何使用逆向工程?

    pom文件(添加相关jar包)->逆向工程核心代码编写->创建generatorConfig.xml配置文件(可以加上log4j日志打印配置文件)

如果你觉得我的文章对你有帮助话,欢迎关注我的微信公众号:" Java面试通关手册 "(一个有温度的微信公众号,无广告,单纯技术分享,期待与你共同进步~~~坚持原创,分享美文,分享各种Java学习资源。)

回顾一下MyBatis逆向工程——自动生成代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Operating System Algorithms

Operating System Algorithms

Nathan Adams、Elisha Chirchir / CreateSpace Independent Publishing Platform / 2017-4-21 / USD 39.15

Operating System Algorithms will walk you through in depth examples of algorithms that you would find in an operating system. Selected algorithms include process and disk scheduling.一起来看看 《Operating System Algorithms》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具