(Mybatis)逆向工程

SpringBoot+MyBatis实现逆向工程 之前一直想要尝试一下自己动手操作一把Mybatis的逆向工程,但是因为各种原因,迟迟未实现,今天正好有空,就试了一把。在搭建的过程当中也遇到了不少的坑,现在将搭建过程和将遇到的坑记录下来,方便自己和各位共享,如果不对之处或有更好的方法,欢迎指出。话不多说,直接上。。。 阅读详情

Mybatis逆向工程:

       作用:mybatis 官方提供逆向工程,可以使用它通过数据库中表来自动生成 Mapper 接口和映射文件(单表的增删改查)和pojo类。

        导入的jar包有:

         

       user.sql:

/*
 Navicat Premium Data Transfer
 Source Server         : localhost_3306
 Source Server Type    : MySQL
 Source Server Version : 50722
 Source Host           : localhost:3306
 Source Schema         : mybatis01
 Target Server Type    : MySQL
 Target Server Version : 50722
 File Encoding         : 65001
 Date: 04/07/2018 11:08:15
*/
 
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
 
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名称',
  `birthday` date NULL DEFAULT NULL COMMENT '生日',
  `sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别',
  `address` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 33 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
 
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '王五', NULL, '2', NULL);
INSERT INTO `user` VALUES (10, '张三', '2014-07-10', '1', '北京市');
INSERT INTO `user` VALUES (16, '张小明', NULL, '1', '河南郑州');
INSERT INTO `user` VALUES (22, '陈小明', NULL, '1', '河南郑州');
INSERT INTO `user` VALUES (24, '张三丰', NULL, '1', '河南郑州');
INSERT INTO `user` VALUES (25, '陈小明', NULL, '1', '河南郑州');
INSERT INTO `user` VALUES (26, '王五', NULL, NULL, NULL);
INSERT INTO `user` VALUES (28, '赵四', '2018-07-02', '1', '福建');
INSERT INTO `user` VALUES (29, '老王', '2018-07-02', '1', '福建');
INSERT INTO `user` VALUES (31, '小王', '2018-07-02', '1', '福建');
INSERT INTO `user` VALUES (32, '小王', '2018-07-02', '1', '福建');
 
SET FOREIGN_KEY_CHECKS = 1;

 

       orders.sql:

/*
 Navicat Premium Data Transfer
 Source Server         : localhost_3306
 Source Server Type    : MySQL
 Source Server Version : 50722
 Source Host           : localhost:3306
 Source Schema         : mybatis01
 Target Server Type    : MySQL
 Target Server Version : 50722
 File Encoding         : 65001
 Date: 04/07/2018 11:19:10
*/
 
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
 
-- ----------------------------
-- Table structure for orders
-- ----------------------------
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL COMMENT '下单用户id',
  `number` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '订单号',
  `createtime` datetime(0) NOT NULL COMMENT '创建订单时间',
  `note` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `FK_orders_1`(`user_id`) USING BTREE,
  CONSTRAINT `FK_orders_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
 
-- ----------------------------
-- Records of orders
-- ----------------------------
INSERT INTO `orders` VALUES (3, 1, '1000010', '2015-02-04 13:22:35', NULL);
INSERT INTO `orders` VALUES (4, 1, '1000011', '2015-02-03 13:22:41', NULL);
INSERT INTO `orders` VALUES (5, 10, '1000012', '2015-02-12 16:13:23', NULL);
 
SET FOREIGN_KEY_CHECKS = 1;

 

步骤一:generatorConfig.xml 配置文件的编写

              

       注意以下要点:

              1、添加要生成的数据库表

              2、生成 pojo 文件所要存放包的路径

              3、生成mapper 文件所要存放包的路径

 

       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/mybatis01" userId="root"
			password="1234">
		</jdbcConnection>
		
		<!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
			connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" 
			userId="yycg"
			password="yycg">
		</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.jadan.pojo"
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		
                <!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="com.jadan.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.jadan.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>
		
		<!-- 指定数据库表 -->
		<table tableName="user"></table>
		<table tableName="orders"></table>
		
		<!-- <table schema="" tableName="sys_user"></table>
		<table schema="" tableName="sys_role"></table>
		<table schema="" tableName="sys_permission"></table>
		<table schema="" tableName="sys_user_role"></table>
		<table schema="" tableName="sys_role_permission"></table> -->
		
		<!-- 有些表的字段需要指定java类型
		 <table schema="" tableName="">
			<columnOverride column="" javaType="" />
		</table> -->
	</context>
</generatorConfiguration>

 

步骤二:使用 java 类生成 mapper文件

       

       StartServer.java:

package generator;

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 StartServer {
	public void generator() throws Exception{
		List<String> warnings = new ArrayList<String>();
		boolean overwrite = true;
		File configFile = new File("generator.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 {
			StartServer startServer = new StartServer();
			startServer.generator();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

步骤三:运行 StartServer.java 文件,刷新项目会自动生成以下内容

               

 

逆向工程注意事项:

       1、Mapper 文件内容不是覆盖而是追加

          XXXMapper.xml文件已经存在时,如果进行重新生成则mapper.xml文件内容不被覆盖而是进行内容追加,结果导致mybatis解析失败。

            解决方法:删除原来已经生成的mapper xml文件再进行生成。

            Mybatis自动生成的po及mapper.java文件不是内容而是直接覆盖没有此问题。

       2、Table schema问题

             下边是关于针对oracle数据库表生成代码的schema问题:

                    Schma即数据库模式,oracle中一个用户对应一个schema,可以理解为用户就是schema。

                   当Oralce数据库存在多个schema可以访问相同的表名时,使用mybatis生成该表的mapper.xml将会出现mapper.xml                       内容重复的问题,结果导致mybatis解析错误。

                   解决方法:在table中填写schema,如下:

                  <table schema="XXXX" tableName=" " >

                  XXXX即为一个schema的名称,生成后将mapper.xml的schema前缀批量去掉,如果不去掉当oracle用户变更了sql语                     句将查询失败。

                  快捷操作方式:mapper.xml文件中批量替换:“from XXXX.”为空

 

                 Oracle查询对象的schema可从dba_objects中查询,如下:

                  select * from dba_objects

 

Mybatis之逆向工程 mybatis是一个ORM框架,ORM对象映射数据库,通过使用对象来操作数据库。逆向工程是指反过来使用数据库反向创建实体类,接口,映射文件。逆向工程特点:方便开发,简化操作。单表的增删改查都会包括,但是需要注意的是一旦涉及到多表,就需要手动创建。 阅读详情

相关推荐

Mybatis逆向工程的坑和mybatis逆向工程的使用

@[TOC]( Mybatis逆向工程的坑和mybatis逆向工程的使用 ) Maven 报错:Process terminated 今天使用mybatis逆向工程,刚开始报错Process terminated,还以为是mybatis逆向工程的错误,然后去百度找了好久都没有,突然看见一篇博客,说是maven错误。 原文链接 点开项目名,然后点击链接进入报错文件中 那么只要把报错信息的内容解决就可以跑起来了 Mybatis 之targetRuntime in context mybatis_model

weixin_45649753的博客 1489

MyBatis逆向工程

MyBatis逆向工程 前言 版本说明 mybatis=3.5.5 jdk=8 mysql=8.0.21 mybatis-generator-core=1.4.0 相关链接: mysql maven 地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java MyBatis 官方文档:https://mybatis.org/mybatis-3/zh/index.html MyBatis Github 地址:https://github

SIMBA1949的博客 643

MyBatis的逆向工程详细步骤操作

所谓的逆向工程:会/可以根据数据库表逆向生成Java的 POJO类,SqlMapper.xml (对应SQL映射文件),以及Mapper 接口类等。关于 MyBatis 的逆向工程有两个版本:对应在 targetRuntime 的两个值:java复制代码1. MyBatis3Simple:生成的是基础版,只有基本的增删改查。2. MyBatis3:生成的是增强版,除了基本的增删改查之外还有复杂的增删改查。注意:MyBatis3 增强版,多出来的这个CarExample。

Javajdkbz的博客 1014

Mybatis逆向工程

Mybatis逆向工程 说明文档网址 : http://mybatis.org/generator/ <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version

jiu_mu_mu的博客 221

MyBatis逆向工程官方插件

当前文件压缩包为mybatisDAO层框架逆向工程插件安装包,具体使用方法可在博主的博文中检索查询!

mybatis逆向工程

逆向工程字面意思就是反向生成工程,和hibernate一样mybatis也有自己的逆向工程工具,hibernate的逆向生成我没有做过,不过我猜大概都已样,再说,hibernate的现在使用很少了,到了使用的时候再去用吧,使用逆向工程时,需要注意的是表之间的关系无法映射出来!也就是说mybatis的逆向工程生成的都是单表操作,

Mybatis---逆向工程

MyBatis 逆向工程是 MyBatis 提供的一个自动生成 MyBatis 映射文件的工具,可以通过逆向工程生成对应的实体类、Mapper 接口和映射文件。两种方式实现:使用代码实现使用插件方式实现。

m0_59489141的博客 662

数据中心机房建设标准及依据

深刻理解、尊重并恪守这些依据,是我们以科学、经济、可靠的方式,为蓬勃发展的数字经济筑牢基石的唯一路径。让我们共同努力,以标准为依据,以匠心为精神,建造更多世界一流的高效能、高可用、高智能的绿色数据中心,共同赋能数字中国的宏伟事业,支撑中华民族在数字时代的伟大复兴征程中稳步前行!今天我将力图以宏大的视角和深入的剖析,系统性地阐述数据中心机房建设所应遵循的多层次、多维度的标准依据,揭示这些依据背后的深层逻辑与时代使命,并探讨其如何共同作用于一座世界级数据中心的诞生。,以支持万兆乃至更高速率的传输。

qq_39980997的博客 1139

MYSQL查询

2、表复制(可应用于sql语句效率测试) 3、删除一张表中的重复记录 4、合并查询 5、表外连接 6、表数据

qq_55005912的博客 182

保姆级教程:用Unity为麒麟系统打包Linux应用(含路径权限全攻略)

本文提供了一份详细的Unity跨平台开发指南,重点介绍如何在麒麟系统上打包和部署Linux应用。从开发环境配置、路径权限处理到性能优化和常见问题解决,全面解析了Unity项目在国产操作系统上的适配流程,帮助开发者高效完成跨平台应用开发。

weixin_28692867的博客 504

【参数不确定】敏感性分析(sensitivity analysis)

【运筹学】灵敏性分析

羊肉蛋花汤的博客 14万+

mybatis 中文官网

mybatis 中文官网 http://www.mybatis.org/mybatis-3/zh/getting-started.html

miracleoa的博客 2万+

UVM概述及uvm_component和uvm_object(一)

UVM:Universal Verification Methodology(通用验证方法学) UVM:是建立在systemverilog平台上的一个库,提供了一系列的接口,让我们能够更方便的进行验证。验证平台组成: Driver:用来把不同的激励施加给DUT; Monitor:用来检测DUT的输出; Scoreboard:专门用来比较期望值与monitor检测到的DUT输出; Refer

南国之邱 1万+

MyBatis的逆向工程

按照惯例,MyBatis的核心配置文件通常命名为mybatis-config.xml,并将其置于项目的资源目录下,如src/main/resources。⑧ databaseIdProvider:用于在多数据库环境下识别不同数据库的方言,以便在映射文件中使用条件语句编写针对特定数据库的SQL。⑨ mappers:配置映射器(Mapper接口或XML映射文件),可以逐个指定文件路径,也可通过包扫描自动发现映射文件。⑥ plugins:注册插件,用于扩展MyBatis的功能,如拦截器、分页插件等。

qq_65285086的博客 1628

巨某量引擎后台登录实战笔记 | Playwright自动化框架

自动化框架、Playwright、滑块、巨某量引擎、抖某音系

什么都会一点。 2077

YOLOv11涨点改进| TGRS 2026 | 独家创新首发、特征融合改进篇| 引入STSAM协同时空注意力融合模块,发论文热点创新,注意力能够互相引导强化边界和结构细节,增强目标检测、图像分割涨点

🔥本文提出了一种改进YOLOv11网络模型的STSAM协同时空注意力融合模块,用于提升高分辨率遥感变化检测的精度。STSAM通过并行处理全局跨时相注意力和局部坐标注意力,能有效聚焦真实变化目标,强化边界和结构细节。该模块包含两个分支:Cross-Attention分支通过时间嵌入增强双时相特征的时间差异,CoordAtt分支则强化局部结构细节。实验表明,STSAM能显著提升变化检测性能,同时保持训练稳定性。文章详细介绍了模块结构、原理、优势,并提供了完整的核心代码实现和配置方法,包括三种改进方案。

Ai缝合怪、助力小伙伴高效发论文 216

Mybatis实现逆向工程

十、mybatis逆向工程 由官方提供的一个工程模板,可以根据指定的数据库自动生成针对单表的所有的常规的增删改查的配置及接口。可以极大的方便设计者,不用再去创建大量的配置及书写接口,从而把精力集中到业务逻辑的实现上去,它的源码存放在github上,也提供了相关的具有逆向工程功能的Maven插件。 1、在pom.xml中引用插件依赖 <build> <finalName>zsxt</finalName> <!--执行逆向工程代码的插

norang的博客 6842

数仓解惑:数据仓库常见建模方法与大数据领域建模实例综述

为什么需要数据建模? 为什么要进行数据仓库建模? 随着DT时代互联网、智能设备等信息技术的发展,数据开始井喷式的增长,如何讲这些数据进行有序、有结构地分类组织存储是我们面临的一个挑战。 如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置,而不是乱糟糟的 大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在 性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑 ...

云祁QI 5849
上一篇: (Mybatis)整合后Mapper接口代理实现
下一篇: ISO8601时间格式之间的转换
Jadan-Z
博客等级 码龄10年 8粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值