大家好,又见面了,我是你们的朋友全栈君。
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