MyBatis 创建逆向工程,实现自动生成 mapper.java、mapper.xml、pojo…

本文介绍如何使用MyBatis Generator自动代码生成器,从配置XML模板到生成实体类、Mapper接口和XML映射文件的全过程。通过具体示例,展示了如何设置数据库连接、生成代码的目标路径以及如何配置生成器的各种属性。
摘要由CSDN通过智能技术生成

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="DB2Tables" targetRuntime="Mybatis3">
		<!-- 避免生成重复代码的插件 -->
		<!-- <plugin type="com.vi.tmall.util.OverlsMergeablePlugin"/> -->
		<!-- 是否不生成注释 -->
		<commentGenerator>
			<property name="suppressDate" value="true" />
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		<!--数据库链接地址账号密码 -->
		<jdbcConnection driverClass="oracle.jdbc.OracleDriver"
			connectionURL="jdbc:oracle:thin:@localhost:1521:orcl" userId="sys as sysdba"
			password="123456" />		
		<!-- 这个元素的配置用来指定JDBC类型和Java类型如何转换。 -->
		<javaTypeResolver>
			<!-- 是否强制将DECIMAL和NUMERIC类型的字段转换为Java类型的java.math.BigDecimal 否则是integer-->
			<property name="forceBigDecimals" value="false"/>
		</javaTypeResolver>
		<!-- targetPackage:生成实体类存放的包名, targetProject:指定目标项目路径,可以是绝对路径或相对路径(如 targetProject="src/main/java") -->
		<javaModelGenerator
			targetPackage="org.cjr.entity" targetProject=".\src">
			<!--enableSubPackages 如果true,MBG会根据catalog和schema来生成子包。如果false就会直接用targetPackage属性。默认为false -->
			<property name="enableSubPackages" value="false" />
			<!-- trimStrings:是否对数据库查询结果进行trim操作,如果设置为true就会生成类似这样public void setUsername(String 
				username) -->
			<property name="trimString" value="true" />
		</javaModelGenerator>
		<!--生成xml映射文件存放位置 -->
		<sqlMapGenerator targetPackage="org.cjr.mapper"
			targetProject=".\src">	
		</sqlMapGenerator>
		<!--生成mapper类存放位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="org.cjr.mapper" targetProject=".\src">
		</javaClientGenerator>
		<!--生成对应表及类名,enableXXX:XXX代表多种SQL方法,该属性用来指定是否生成对应的XXX语句 -->
		<table tableName="Student"></table>
		<table tableName="StudentCard"></table>	
		<table tableName="StudentClass"></table>
	</context>
</generatorConfiguration>

3.工具类

package org.cjr.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 Test {
	
	public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
		
		List<String> warning = new ArrayList<>();
		
		File  file = new File("src/generator.xml");
		
		ConfigurationParser cp = new ConfigurationParser(warning);
			
		Configuration config = cp.parseConfiguration(file); 
		
		DefaultShellCallback callback = new DefaultShellCallback(true);
		
		MyBatisGenerator generator = new MyBatisGenerator(config,callback,warning);
		generator.generate(null);
	}

}

执行Test 就可以生成结构了

最后,我们写一个 查询 来测试功能;

public class test1111 {

	public static void main(String[] args) throws IOException {

		Reader reader = Resources.getResourceAsReader("config.xml");

		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

		SqlSession session = sqlSessionFactory.openSession();
		/*
		 * 1.实现接口 2.然后接口文件的名称 与 xml中的namespace形成映射 自动绑定配置
		 */
		StudentMapper studentmapper = session.getMapper(StudentMapper.class);
		// example 中Criteria 的查询条件
		StudentExample example = new StudentExample();

		Criteria criteria = example.createCriteria();
          
		List<Student> student = studentmapper.selectByExample(example);
		
		System.out.println(student);
		
	}
}

 运行结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值