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

2022-07-01 19:42:31 浏览数 (1)

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

MyBatis逆向工程代码的生成

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

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

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

准备工作:

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

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

user表:

代码语言:javascript复制
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表:

代码语言:javascript复制
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包

博主文件位置:

普通工程可以下载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文件引入

代码语言:javascript复制
<!-- 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

代码语言:javascript复制
<?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=".srcmainjava">
			<!-- 
				trimStrings属性值: 
				true:对数据库的查询结果进行trim(去空格)操作 
				false(默认):不进行trim操作
			 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		
		<!-- 生成mapper文件 -->
		<!-- targetProject属性值:SQL映射文件的生成位置     targetPackage属性值:SQL映射文件所在包的路径 -->
		<sqlMapGenerator targetPackage="com.sss.mybatisGenerator.mapper"  targetProject=".srcmainjava">
		</sqlMapGenerator>
		
		<!-- 生成动态代理的接口   我这里mapper.xml与接口在同一个包下  -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.sss.mybatisGenerator.mapper"  targetProject=".srcmainjava">
		</javaClientGenerator>
		
		<!-- 指定数据库中的表 -->
		<table tableName="user" />
		<table tableName="user_card" />
		
	</context>
</generatorConfiguration>

4、编写测试代码

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

MyBatisGeneratorTest.java

代码语言:javascript复制
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、测试

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

如有问题,请留言

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

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

0 人点赞