mybatis 逆向工程 代码的使用与生成

MyBatis Generator (MBG) 是一个代码生成器,用于简化与数据库表的交互。本文介绍MBG的使用步骤,包括导入jar包、创建配置文件、编写测试代码以及如何在项目中应用生成的代码。通过MBG,可以自动生成数据访问对象(DAO)、Mapper和Java实体类,减少手动编写CRUD操作的初始工作。
摘要由CSDN通过智能技术生成


一.mybatis逆向工程简介

MyBatis Generator(MBG)是MyBatis和iBATIS的代码生成器。它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码。它将内省数据库表(或许多表),并将生成可用于访问表的工件。这减少了设置对象和配置文件以与数据库表交互的初始麻烦。MBG寻求对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍然需要为连接查询或存储过程手动编写SQL和对象代码。

二、使用步骤

1.导入jar包

generator包下载地址:https://github.com/mybatis/generator/releases
在这里插入图片描述

2.新建配置文件

在src目录下新建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>
	<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/demo" userId="root"
			password="12345">
		</jdbcConnection>
		<!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
			connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" 
			userId="yycg"
			password="yycg">
		</jdbcConnection> -->

		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
			NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- targetProject:生成实体类的位置 -->
		<javaModelGenerator targetPackage="com.shop.domain"
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="com.shop.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.shop.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>
		<!-- 指定数据库表 -->
		<!-- <table tableName="items"></table> -->
		<table tableName="order"></table>
		<!-- <table tableName="orderdetail"></table> -->
		<table tableName="user"></table>
		<!-- <table schema="" tableName="sys_user"></table>
		<table schema="" tableName="sys_role"></table>
		<table schema="" tableName="sys_permission"></table>
		<table schema="" tableName="sys_user_role"></table>
		<table schema="" tableName="sys_role_permission"></table> -->
		
		<!-- 有些表的字段需要指定java类型
		 <table schema="" tableName="">
			<columnOverride column="" javaType="" />
		</table> -->
	</context>
</generatorConfiguration>

3.编写测试代码

在src目录下建立test包和test文件
在这里插入图片描述

编写测试用例:

package org.yqzc.test;
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;
public class GeneratorTest {
	public static void main(String[] args) throws InvalidConfigurationException, SQLException, IOException, InterruptedException, XMLParserException {
		//指定逆向工程文件位置
		File file=new File("src/generator.xml");
		//定义警告内容字符串
		List<String> warnings=new ArrayList<>();
		//打印提示内容
		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);
	}
}

运行之后会生成使用类java、数据接口dao、数据存储对象mapper
在这里插入图片描述
example类是教你如何使用的,可以删除掉,在接口层也有几行相关exp代码,也删掉

4 项目中使用逆向工程代码

增删改查的方法,根据生成类更改类的声明

//删除符合条件的记录
int deleteByExample(UserExample example);
//根据主键删除
int deleteByPrimaryKey(String id);
//插入对象所有字段
int insert(User record);
//插入对象不为空的字段
int insertSelective(User record);
//自定义查询条件查询结果集
List<User> selectByExample(UserExample example);
//根据主键查询
UserselectByPrimaryKey(String id);
//根据主键将对象中不为空的值更新至数据库
int updateByPrimaryKeySelective(User record);
//根据主键将对象中所有字段的值更新至数据库
int updateByPrimaryKey(User record);

对数据库的完整操作方法

public class Demo1 {
	@Test
	public void fun1() throws IOException {
		// 读取mybatis的核心配置文件
		String configXml = "mybatis-config.xml";

		InputStream inputStream = Resources.getResourceAsStream(configXml);

		// 创建sqlSessionFactory
		SqlSessionFactory sqlSession = new SqlSessionFactoryBuilder().build(inputStream);

		// 使用sqlSessionFactory 创建sqlSession
		SqlSession session = sqlSession.openSession();
		UserMapper userMapper = session.getMapper(UserMapper.class);
		User user = userMapper.selectByPrimaryKey(1);
		System.out.println(user);
	}
	
	@Test
	public void fun2() throws IOException {
		// 读取mybatis的核心配置文件
		String configXml = "mybatis-config.xml";

		InputStream inputStream = Resources.getResourceAsStream(configXml);

		// 创建sqlSessionFactory
		SqlSessionFactory sqlSession = new SqlSessionFactoryBuilder().build(inputStream);

		// 使用sqlSessionFactory 创建sqlSession
		SqlSession session = sqlSession.openSession();
		UserMapper userMapper = session.getMapper(UserMapper.class);
		UserExample example = new UserExample();
		Criteria criteria = example.createCriteria();
		criteria.andUsernameLike("%陈%");
		criteria.andSexEqualTo("1");
		List<User> list = userMapper.selectByExample(example);
		for (User user : list) {
			System.out.println(user);
		}
	}
}

总结

本文仅仅简单介绍了Generator的使用,Generator.xml提供了使我们快速便捷地创建mybatis数据操作相关代码,减少繁琐的创建生成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值