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

简介: 平时我们的开发过程,除了系统框架的搭建。其他无非就是CRUD增删改查的代码逻辑搬砖,CRUD也就避免不了要跟数据库打交道。

一、何为逆向工程?


   平时我们的开发过程,除了系统框架的搭建。其他无非就是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

cdb77b7c78675b2691d09dfb9be4f54f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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


如下所示:

874e9f03a313b98792cf914939f96c12_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


带有注释的实体类

d487ecca594c6bb75e45594f92f63a10_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


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


注:这里的生成路径是楼主自己建的临时路径文件夹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月前
|
XML Java 数据库连接
mybatis plus模板快速生成代码
MybatisX 是一款提升开发效率的 IDEA 插件,尤其适用于处理多表情况。通过 MybatisX-Generator,用户能轻松生成实体类、服务类、Mapper 接口及 XML 文件,显著减少工作量。安装步骤简便:通过 File -&gt; Settings -&gt; Plugins -&gt; Browse Repositories 完成搜索与安装流程。集成数据库后,右键所需操作的数据表,选择 MyBatisX-Generator 进行自动化代码生成。更多细节可参考相关教程。
71 0
|
16天前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
1月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
111 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
26天前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
30 6
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
312 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
1月前
|
XML 前端开发 数据格式
echarts柱图前后端代码SpringCloud+Vue3
echarts柱图前后端代码SpringCloud+Vue3
52 1
|
4月前
|
Oracle 关系型数据库 Java
mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
|
5月前
|
SQL 前端开发 Java
我这样写代码,比直接使用 MyBatis 效率提高了 100 倍
Mybatis Hibernate 等都是我们常用的 ORM, 它们有时候很好用,但某些场景下也很繁琐,比如下文要讲的一个需求,最后本文会给出比直接用这些 ORM 开发效率至少提高 100 倍的方法...
54 1
我这样写代码,比直接使用 MyBatis 效率提高了 100 倍
|
4月前
|
Java 数据库连接 Maven
Private method ‘getVideoList()‘ is never used,mybatis必须指定Mapper文件和实体目录,在参考其他人写的代码,要认真分析别人的代码,不要丢失
Private method ‘getVideoList()‘ is never used,mybatis必须指定Mapper文件和实体目录,在参考其他人写的代码,要认真分析别人的代码,不要丢失
|
5月前
|
SQL 缓存 Java
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件