SpringCloud+MyBatis(oracle)逆向工程自动生成代码

一、何为逆向工程?

    平时我们的开发过程,除了系统框架的搭建。其他无非就是CRUD增删改查的代码逻辑搬砖,CRUD也就避免不了要跟数据库打交道。一般常见的数据库操作insert(增)、update(改)、select(查)、delete(删);常规传统的数据库层面开发,涉及如下过程:

1、建立数据库DB连接(已有表)

2、实体类/POJO/Mapper.xml

3、程序增删改查操作

其中,第二步:实体类/POJO/XML等;都是由手工编写的代码和xml文件,此为正向工程。

二、为何逆向工程?

如一所述:正向工程,人为手工编写代码实体类/POJO/Mapper.xml等,很多操作都是重复并冗余的。比如:实体类,其实就是数据库表的一个映射,把表字段一个个列出来并设置getter/setter方法以便程序使用。pojo,select、update、delete、insert方法也都是千篇一律,无非就是方法不同,参数各异。xml,就是SQL语句的整合与数据库交互的连接点;对于同一个项目而言数据库连接相同,项目路径一样等。

    如果:可以自动生成实体类、pojo、xml等,那么可以减轻很多重复人为工作量,转而由机器自动生成,当数据库表操作量大的话,会节省很多的时间。

三、Spring中MyBatis逆向工程操作步骤

  • Maven添加依赖
  • generatorConfig.xml配置
  • 数据库连接配置、实体类/POJO/XML生成路径
  • 指定数据库表
  • java class用于自动生成的main方法

1、Maven依赖,包括ojdbc数据库连接、mybatis支持、spring-mybatis插件这几大类。

SpringBoot对MyBatis插件的支持:

        <dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.1.1</version>
		</dependency>

自动生成mybatis-generator-core依赖引入(核心):

			<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>1.3.2</version>
				<dependencies>
					<dependency>
						<groupId>org.mybatis.generator</groupId>
						<artifactId>mybatis-generator-core</artifactId>
						<version>1.3.2</version>
					</dependency>
				</dependencies>
			</plugin>

2、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>

	<classPathEntry
		location="C:\Users\Administrator\.m2\repository\com\oracle\ojdbc6\11.1.0.7.0\ojdbc6-11.1.0.7.0.jar" />
	<context id="context1"> 
		<property name="javaFileEncoding" value="UTF-8" />
		<commentGenerator type="com.**nks.e**s.CustomCommentGenerator" >
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

		<jdbcConnection connectionURL="jdbc:oracle:thin:@//1**.20.19.2**:1521/p**y"
			driverClass="oracle.jdbc.driver.OracleDriver" password="***#123"
			userId="**s">
			<!-- 针对oracle数据库 -->
			<property name="remarksReporting" value="true"></property>
		</jdbcConnection>


		<javaModelGenerator targetPackage="com.**nks.**ps.pas.tmp"
			targetProject="src\main\java\com\**links\**ps\pas\tmp" />

		<sqlMapGenerator targetPackage="com.**links.**ps.pas.tmp"
			targetProject="src\main\java\com\**links\**ps\pas\tmp" />

		<javaClientGenerator targetPackage="com.**links.**ps.pas.tmp"
			targetProject="src\main\java\com\**links\**ps\pas\tmp" type="XMLMAPPER" />


		<table tableName="CUM_WITHDRAW_COUNT_RECORD" domainObjectName="WithdrawCountRecord"
			   enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
			   enableSelectByExample="false" selectByExampleQueryId="false">
		</table>
	</context>
</generatorConfiguration>

3、CustomCommentGenerator自动生成的启动main方法入口class文件

package com.**links.**ps;

import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultCommentGenerator;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class CustomCommentGenerator extends DefaultCommentGenerator {
	@Override
	public void addFieldComment(Field field, IntrospectedTable introspectedTable,
			IntrospectedColumn introspectedColumn) {
		// 添加字段注释 
		field.addJavaDocLine("/**"); 
		if (introspectedColumn.getRemarks() != null) {
            field.addJavaDocLine(" * " + introspectedColumn.getRemarks());
        }
		 // addJavadocTag(field, false);
		field.addJavaDocLine(" */");
	}
	
	
	public static void main(String[] args) throws Exception {
        try {
            List<String> warnings = new ArrayList();
            boolean overwrite = true;
            ClassLoader classloader = Thread.currentThread().getContextClassLoader();
            InputStream is = classloader.getResourceAsStream("generatorConfig.xml");
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(is);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }

}

按照上述步骤都做好之后,在不需要启动项目的前提下,即可自动生成代码。

右键单击CustomCommentGenerator类,选择run或debug

接下来,程序就自动生成指定的表所需要的实体类、POJO、mapper.xml

如下所示:

带有注释的实体类

如此,整个过程的步骤都完成了。

注:这里的生成路径是楼主自己建的临时路径文件夹src\main\java\com\**links\**ps\pas\tmp,然后再如果有批量的表需要自动生成,则只需在generatorConfig.xml文件中配置多个table即可。


		<table tableName="tableName***" domainObjectName="pojoName***"
			   enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
			   enableSelectByExample="false" selectByExampleQueryId="false">
		</table>
......

MyBatis的逆向工程,给我们开发带来很大的便利。是开发者必须要掌握的技术,分享到这里;觉得有帮助随手给个赞和转发一下。

 

同名原创公众号: 程序大视界

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序大视界

原创不易,请给点支持和鼓励吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值