【MyBatis框架】MyBatis的逆向工程生成代码,如何生成逆向工程

本文介绍MyBatis逆向工程的概念及使用方法,包括如何通过数据库表自动生成MyBatis所需的各种代码(如mapper.xml、mapper.java、实体类等),并提供了详细的配置文件示例及测试步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:逆向工程是什么。

介绍:
mybatis的一个主要的特点就是需要程序员自己编写mybatis.xml的sql语句,如果表太多的话,自己写就难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po…)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。


2:怎么使用逆向工程。

2-1新建一个工程(重要)

  • 新建一个java工程,下载逆向工程后导入到新建的java工程里面。

逆向工程代码(下载地址)---->[点我下载]

  • 导入后结构如下:

这里写图片描述

2-1-1 此步骤注意事项:逆向工程结构说明.

①:是要执行的java代码,执行它即可生成我们需要的代码;
②:是执行过程中新建的包,这个包都可以在4的配置文件中指定,最好是跟我们自己项目的包名一致,后面就可以直接拷贝了,就不需要修改包名了;
③:就是jar包咯;
④:是配置文件。


2-2生成代码的配置文件(generatorConfig.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>
	<context id="testTables" targetRuntime="MyBatis3">
		<commentGenerator>
			<!-- 是否去除自动生成的注释 true:是 : false:否 -->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://192.168.1.6:3306/jock2017" userId="root"
			password="jockpw">
		</jdbcConnection>
		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
			NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>
		<!-- targetProject:生成PO类的位置 -->
		<javaModelGenerator targetPackage="com.ssm.jock.po"
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="com.ssm.jock.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.ssm.jock.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>
		<!--指定数据库表-->
		<table tableName="g_info"></table>
		<table tableName="g_label"></table>
	</context>
</generatorConfiguration>

2-2-1 此步骤注意事项:从上面的配置文件中可以看出,配置文件主要要做的几件事是

①:连接数据库,这是必须的,要不然怎么根据数据库的表生成代码呢?
②:指定要生成代码的位置,要生成的代码包括po类, mapper.xml和mapper.java
③:指定数据库中想要生成哪些表


3:测试逆向工程。

3-1 执行生成逆向代码程序(GeneratorSqlmap.java)

import java.io.File;
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.internal.DefaultShellCallback;

public class GeneratorSqlmap {
	public void generator() throws Exception{
		System.out.println("开始...");
		List<String> warnings = new ArrayList<String>();
		boolean overwrite = true;
		//指定 逆向工程配置文件
		File configFile = new File("generatorConfig.xml"); 
		ConfigurationParser cp = new ConfigurationParser(warnings);
		Configuration config = cp.parseConfiguration(configFile);
		DefaultShellCallback callback = new DefaultShellCallback(overwrite);
		MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
				callback, warnings);
		myBatisGenerator.generate(null);
		System.out.println("完成!");
	} 
	public static void main(String[] args) throws Exception {
		try {
			GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
			generatorSqlmap.generator();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

3-1-1此步骤注意事项:

①:指定 逆向工程配置文件。指定才能生成到所需的数据库表


3-1-2 页面截图:
这里写图片描述


3-2 运行完成后,刷新一下工程,就可以看到最新生成的代码了。 :

这里写图片描述

3-2-1 此步骤生成后解释说明 :

①:【com.ssm.jock.mapper】 里面的Mapper和XML文件就是逆向生成的接口和mybatis配置
②:【cpm.ssm.jock.po】 里面的就是实体类和Example类是给用户自定义sql是用的。


3-2-2 详细解释每个类 :(拿GInfo这个表来说)
①:数据库表结构

这里写图片描述

②:GinfoMapper.java【提供大部分增删改查的方法,不需要自己写接口,已经生成好了】

这里写图片描述

③:GinfoMapper.xml【自动生成mybatis对应的数据库表的xml文件,不用自己写了】

这里写图片描述

④:GInfo.java【自动生成数据库表的实体类文件】

这里写图片描述

⑤:GInfoExample.java【自动生成数据库表的实体拓展类文件】

这里写图片描述


public class GeneratorSqlmap { public void generator() throws Exception{ List<String> warnings = new ArrayList<String>(); boolean overwrite = true; //指定 逆向工程配置文件 File configFile = new File("generatorConfig.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); } public static void main(String[] args) throws Exception { try { GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); generatorSqlmap.generator(); } catch (Exception e) { e.printStackTrace(); } } } <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- targetProject:生成PO类的位置 --> <javaModelGenerator targetPackage="cn.itcast.ssm.po" targetProject=".\\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> <!-- 从数据库返回的值被清理前后的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- targetProject:mapper映射文件生成的位置 --> <sqlMapGenerator targetPackage="cn.itcast.ssm.mapper" targetProject=".\\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- targetPackage:mapper接口生成的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="cn.itcast.ssm.mapper" targetProject=".\\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定数据库表 --> <table schema="" tableName="user"></table> <table schema="" tableName="orders"></table> <table schema="" tableName="items"></table> <table schema="" tableName="orderdetail"></table>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q_Q 忙里偷闲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值