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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java 递归、DFS、回溯

    Java 递归、DFS、回溯DFS/回溯算法如果某问题的解可以由多个步骤得到,而每个步骤都有若干种选择(这些候选方案集可能会依赖之前做出的选择),且可以用递归枚举法实现,则它的工作方式可以用解答树来描述。全排列问题输出数字1~N所能组成的所有全排列publicclassA{/***全排列**@paramargs*/staticVector<Integer>vector=newVector<>();s

    2022年7月8日
    15
  • SQL注入报错注入函数[通俗易懂]

    SQL注入报错注入函数[通俗易懂]前言报错注入的前提是当语句发生错误时,错误信息被输出到前端。其漏洞原因是由于开发人员在开发程序时使用了print_r(),mysql_error(),mysqli_connect_error()函数将mysql错误信息输出到前端,因此可以通过闭合原先的语句,去执行后面的语句。常用报错函数updatexml()是mysql对xml文档数据进行查询和修改的xpath函数extractvalue()是mysql对xml文档数据进行查询的xpa…

    2022年9月30日
    1
  • 从零开始学习java一般需要多长时间?「建议收藏」

    从零开始学习java一般需要多长时间?「建议收藏」其实学java一般要多久?因人而异,例如一个零基础的小白自学java,每天学习8个小时来算,而且在有学习资料的基础上,每天学习,从零到找到工作,起码要半年起步,而且还要有项目经验,否则是不会有公司要你的。而一个有一些基础的人,在经过有人系统的教学后,是可以很快学会掌握java的,大概3个月左右。不过java相对于C,C++java而言,java无疑简单了很多,不需要指针,不需要销毁对象,使得对ja…

    2022年7月7日
    22
  • window10怎么提供管理员权限删除文件_如何用管理员权限删除文件

    window10怎么提供管理员权限删除文件_如何用管理员权限删除文件http://www.xitongcity.com/jiaocheng/win8_content_3473.html很多win8.1系统用户在对磁盘文件进行清理时,经常会遇到“文件夹访问被拒绝,您需

    2022年8月1日
    3
  • 什么是泛型编程

    什么是泛型编程1.C++两种抽象方法(1)面向对象编程封装(Encapsulation)继承(Inheritance)多态(Polymorphism)(2)泛型编程概念(concepts)模型化(modeling)强化(refinement)2.泛型编程概念泛型编程(GenericProgramming)指在多种数据类型上皆可操作。和面向对象编程不同,它并不要求额外的间接…

    2022年6月15日
    25
  • CSS鼠标悬浮及其样式

    CSS鼠标悬浮及其样式hover鼠标悬浮的使用和定义用法示例选择鼠标指针浮动在其上的元素,并设置其样式:.box:hover{background-color:red;}定义和用法:hover选择器用于选择鼠标指针浮动在上面的元素。提示:hover选择器可用于所有元素:link选择器设置指向未被访问页面的链接的样式,:visited选择器用于设置指向已被访问的页面…

    2022年5月31日
    32

发表回复

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

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