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逆向工程代码的生成及使用详解

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

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

(0)
上一篇 2022年6月13日 下午10:46
下一篇 2022年6月13日 下午10:46


相关推荐

  • IAR for ARM介绍、下载、安装与注册

    IAR for ARM介绍、下载、安装与注册推荐分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang推荐在我公众号「strongerHuang」和博客阅读该专栏1.EWSTM8系列教程01_IAR介绍、下载、安装和注册2.EWSTM8系列教程02_新建基础软件工程3.EWSTM8系列教程03_…

    2022年5月16日
    155
  • pytest执行多个用例_pytest如何循环执行用例

    pytest执行多个用例_pytest如何循环执行用例前言平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,

    2022年7月30日
    8
  • git使用具体介绍

    git使用具体介绍

    2021年12月4日
    35
  • Vue(9)购物车练习

    Vue(9)购物车练习购物车案例经过一系列的学习,我们这里来练习一个购物车的案例**需求:**使用vue写一个表单页面,页面上有购买的数量,点击按钮+或者-,可以增加或减少购物车的数量,数量最少不得少于0,点击移除按钮

    2022年7月31日
    10
  • Hadoop相关资源地址「建议收藏」

    Hadoop相关资源地址「建议收藏」Hadoop相关资源地址链接

    2022年5月11日
    45
  • Webservice原理解析

    Webservice原理解析Webservice 的基本概念 WebServices nbsp 直译过来就 web nbsp 服务 nbsp 个人理解就是一种基于 Internet 的对外服务机制 nbsp 它的应用领域是 Internet 而不仅限于局域网或试验环境 这就要求我们的 WebServices nbsp 框架必须适用于现有的 Internet nbsp 软件和硬件环境 即服务的提供者所提供的服务必须具有跨平台 跨语言的特性 其次 WebServices nbsp 所提供的服务

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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