MyBatis逆向工程代码的生成及使用详解

MyBatis逆向工程代码的生成及使用详解MyBatis逆向工程代码的生成 在MyBatis的开发过程中,数据库表、实体类、SQL映射文件(mapper.xml文件)以及动态代理接口四者之间有着非常密切的关系。 一般的开发流程是:先设计并创建数据库表(如user表),再根据数据库表创建对应的实体类(如User.java),之后再编写SQL映射文件(如userMapper.xml),最后再根据SQL映射文件…

大家好,又见面了,我是你们的朋友全栈君。

MyBatis逆向工程代码的生成

      在MyBatis的开发过程中,数据库表、实体类、SQL映射文件(mapper.xml文件)以及动态代理接口四者之间有着非常密切的关系。

         一般的开发流程是:先设计并创建数据库表(如user表),再根据数据库表创建对应的实体类(如User.java),之后再编写SQL映射文件(如userMapper.xml),最后再根据SQL映射文件编写动态代理接口(如userMapper.java)。

除此之外,我们还可以只设计并创建数据库表,然后利用MyBatis提供的工具来自动生成其他三个(实体类、SQL映射文件和动态代理接口),以下是具体的步骤:

准备工作:

   1、在数据库中准备所需的数据表(如 user、user_card)两张表

  注: 直接将sql语句复制进去,运行。如若发现错误,检查是否出现其他符号,由于网页转换导致有时候不能识别。

      user表:

INSERT INTO `ssm_practice`.`user`(`id`, `name`, `age`, `card_id`) VALUES (1, '张三', 20, '150');
INSERT INTO `ssm_practice`.`user`(`id`, `name`, `age`, `card_id`) VALUES (2, '李四', 21, '151');
INSERT INTO `ssm_practice`.`user`(`id`, `name`, `age`, `card_id`) VALUES (3, '王五', 22, '152');

user_card表:

INSERT INTO `ssm_practice`.`user_card`(`id`, `card_id`, `card_class`) VALUES (1, '150', '1');
INSERT INTO `ssm_practice`.`user_card`(`id`, `card_id`, `card_class`) VALUES (2, '151', '2');
INSERT INTO `ssm_practice`.`user_card`(`id`, `card_id`, `card_class`) VALUES (3, '152', '3');

2、在Maven项目中引入所需jar包 

   博主文件位置:

       MyBatis逆向工程代码的生成及使用详解

   普通工程可以下载jar包引入进项目即可(mysq、mybatis、及mybatis-generator-core)

     普通工程jar下载地址:

https://repo1.maven.org/maven2/org/mybatis/generator/mybatis-generator-core/1.3.7/mybatis-generator-core-1.3.7.jar

 Maven项目pom文件引入

<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
   <dependency>
	<groupId>org.mybatis.generator</groupId>
	<artifactId>mybatis-generator-core</artifactId>
	<version>1.3.7</version>
   </dependency>

3、创建配置文件并进行编写

   generator.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>
	<!-- mybatisGenerator:上下文名称    targetRuntime:环境是MyBatis3.x -->
	<context id="mybatisGenerator" targetRuntime="MyBatis3">
		<!--自动生成类时加不加注释 -->
		<commentGenerator>
			<!--
				 suppressAllComments属性值:
				 true:自动生成实体类、SQL映射文件时没有注释 
				 false:自动生成实体类、SQL映射文件,并附有注释 
			-->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		
		<!-- 数据库连接信息 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://127.0.0.1:3306/ssm_practice" 
			userId="root"
			password="root">
		</jdbcConnection>
		<!-- 
			forceBigDecimals属性值:
			   true:把数据表中的DECIMAL和NUMERIC类型, 解析为JAVA代码中的java.math.BigDecimal类型 
			   false(默认):把数据表中的DECIMAL和NUMERIC类型, 解析为解析为JAVA代码中的Integer类型 
		-->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>
		
		<!-- targetProject属性值: 实体类的生成位置     targetPackage属性值:实体类所在包的路径 -->
		<javaModelGenerator
			targetPackage="com.sss.mybatisGenerator.pojo"   targetProject=".\src\main\java">
			<!-- 
				trimStrings属性值: 
				true:对数据库的查询结果进行trim(去空格)操作 
				false(默认):不进行trim操作
			 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		
		<!-- 生成mapper文件 -->
		<!-- targetProject属性值:SQL映射文件的生成位置     targetPackage属性值:SQL映射文件所在包的路径 -->
		<sqlMapGenerator targetPackage="com.sss.mybatisGenerator.mapper"  targetProject=".\src\main\java">
		</sqlMapGenerator>
		
		<!-- 生成动态代理的接口   我这里mapper.xml与接口在同一个包下  -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.sss.mybatisGenerator.mapper"  targetProject=".\src\main\java">
		</javaClientGenerator>
		
		<!-- 指定数据库中的表 -->
		<table tableName="user" />
		<table tableName="user_card" />
		
	</context>
</generatorConfiguration>

4、编写测试代码

注:new File(“配置文件路径”)时    配置文件的路径一定要写对,不然会报错

MyBatisGeneratorTest.java

package com.sss.mybatisGenerator;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
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.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

/**
 * @Description: Mybatis逆向工程测试类
 */
public class MyBatisGeneratorTest {

	public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {

		//  找到配置文件
		File file = new File("src/main/resources/generator.xml");
		//  需要生成List保存警告信息
		List<String> warnings = new ArrayList<String>();
		ConfigurationParser cp = new ConfigurationParser(warnings);
		Configuration config = cp.parseConfiguration(file);
		DefaultShellCallback callBack = new DefaultShellCallback(true);
		//  逆向工程核心类
		MyBatisGenerator generator = new MyBatisGenerator(config, callBack, warnings);
		generator.generate(null);
	}
}

5、测试

运行测试类,控制台没有打印信息,证明生成类成功,可以去路径下刷新查看。

MyBatis逆向工程代码的生成及使用详解

 如有问题,请留言

 

————————————————————————————————————————————————

MyBatis逆向工程代码的生成及使用详解MyBatis逆向工程代码的生成及使用详解

坚持总结工作中遇到的技术问题,坚持记录工作中所思所见。群中可下载相关资料

MyBatis逆向工程代码的生成及使用详解

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147141.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java指令重排_jvm指令重排

    java指令重排_jvm指令重排引言:在Java中看似顺序的代码在JVM中,可能会出现编译器或者CPU对这些操作指令进行了重新排序;在特定情况下,指令重排将会给我们的程序带来不确定的结果…..1.什么是指令重排?在计算机执行指令的顺序在经过程序编译器编译之后形成的指令序列,一般而言,这个指令序列是会输出确定的结果;以确保每一次的执行都有确定的结果。但是,一般情况下,CPU和编译器为了提升程序执行的效率,会按照一定的规则允…

    2022年10月18日
  • springboot启动类–SpringApplication.run()详解

    springboot启动类–SpringApplication.run()详解前言实习的第一个项目是利用springboot完成一个需求,在项目搭建的过程中真正感受到springboot的强大,springboot的起步依赖以及自动配置特性简直不要太爽,在项目搭建的过程中解放了我们的小手。而springboot的启动也非常简单,只需要启动springboot的启动类,springboot会帮助我们准备所有的环境,包括server,监听器,装配spring的上下文等等,s…

  • 解决修改PyCharm源后添加源信任的问题

    解决修改PyCharm源后添加源信任的问题这里写自定义目录标题问题描述解决办法方法一(临时)方法二WindowsLinuxmacOS问题描述使用PyCharm内置的包管理修改默认源为豆瓣源后出现报错:“Therepositorylocatedatpypi.douban.comisnotatrustedorsecurehostandisbeingignored”解决办法方法一(临时)在选择安装包的右…

  • CreateEvent( )——创建事件函数「建议收藏」

    CreateEvent( )——创建事件函数「建议收藏」/***************************************************************************************************

  • 为什么说hashmap是线程不安全的_map线程不安全

    为什么说hashmap是线程不安全的_map线程不安全 hashMap线程不安全的原因及表现hashMap出现线程不安全的原因:HashMap的实现里没有锁的机制,因此它是线程不安全的。其实只要有锁的机制,可以通过锁实现线程安全,我们在读写HashMap对象的时候加锁,以保障这个对象的线程安全,但不代表HashMap本身是线程安全的,因为是外力(你自己加的锁)使然。为啥不在HashMap内部加锁让它变成线程安全?这…

  • el-upload多文件上传_vue 界面

    el-upload多文件上传_vue 界面vue使用element-ui的el-upload实现上传文件到后台的功能1.添加el-upload控件<el-upload:action=”action”:file-list=”modeList”:http-request=”modeUpload”><el-buttonsize=”small”type=”primary…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号