ssm:mybatis中最实用的一个功能(逆向工程)

1.简介
在mybatis的项目中,最繁琐的就是制作映射文件,还有一个就是要为数据库中数据表手动做一个实体类。有一个简便方法就是让mybatis根据数据库连接自动生成映射文件和实体类,这就是mybatis逆向工程。

2.应用场景
通常逆向工程单独作为一个项目,把所需的映射文件和实体类自动生成后再复制到项目中,而且自动生成的映射文件往往还需要再根据真实的项目需求进行修改。

3.博主的个人理解
通俗的理解就是通过mybatis配置文件来自动生成数据库中数据表对应的实体类和配置文件。

试想一下,若某一个数据表中的字段特别的多,那么创建其对应的实体类和映射文件将特别的繁琐,所以此时若通过mybatis的逆向工程来自动生成实体类和映射文件将大大减少程序员的工作量

应用实例:已有数据库studentsdb,里面有数据表students,通过逆向工程自动生成映射文件和实体类。

需要用到的数据库和数据表

create database studentsdb;
use studentsdb;

drop table students;

create table students(
	s_id int primary key,
	s_class varchar(20),
	s_name varchar(30),
	s_sex	varchar(5),
	s_age	int,
	s_mobile int,
	s_address varchar(30)
)


select * from students;

在这里插入图片描述

项目目录结构图
在这里插入图片描述

Test.java

package com.xiaochen.test;

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 Test {

	public void generator() throws Exception {
		List<String> warnings = new ArrayList<String>();
		boolean overwrite = true;

		// 指定逆向工程配置文件
		File confingFile = new File("src/generatorConfig.xml");
		ConfigurationParser cp = new ConfigurationParser(warnings);
		Configuration config = cp.parseConfiguration(confingFile);

		DefaultShellCallback callback = new DefaultShellCallback(overwrite);
		MyBatisGenerator mg = new MyBatisGenerator(config, callback, warnings);

		mg.generate(null);
	}

	public static void main(String[] args) throws Exception {
		try {
			Test test = new Test();
			test.generator();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

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://localhost:3306/studentsdb" userId="root"
			password="123abc">
		</jdbcConnection>
		
		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 
			和 NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- targetProject:生成实体类的位置 -->
		<javaModelGenerator targetPackage="com.xiaoche.entity"
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		
		
		<!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="com.xiaochen.dao"
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.xiaochen.dao" targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>
		
		<!-- 指定数据库表 -->
		<!-- <table schema="" tableName="emp"></table> -->
         <!-- 要对那些数据表进行生成操作,必须要有一个. -->
         <table schema="mybatis" tableName="students" domainObjectName="Students" 
        enableCountByExample="false" enableUpdateByExample="false"
        enableDeleteByExample="false" enableSelectByExample="false"
        selectByExampleQueryId="false"> </table> 
        
        <!-- <table schema="mybatis" tableName="dept" domainObjectName="Dept" 
        enableCountByExample="false" enableUpdateByExample="false"
        enableDeleteByExample="false" enableSelectByExample="false"
        selectByExampleQueryId="false"> </table>  -->
        
       
        


	</context>
</generatorConfiguration>

运行结果图
运行前
在这里插入图片描述

运行后,刷新项目目录结构图
在这里插入图片描述

可以发现,通过运行Test类可以自动生成数据表students对应的实体类和mapper配置文件,这样一来只需稍微做一些修改就可以得到自己需要得实体类和mapper配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值