Mybatis学习笔记_7、Mybatis generator

简介

Mybatis Generator(MBG),下面我们统称为MBG,是一个Mybatis和iBatis的代码生成器。他可以内省数据库的表(或多个表)然后生成可以用来访问(多个)表的基础对象。这样减少了项目新建时各种配置对象,配置文件和数据库交互的麻烦。 MBG的解决了一些数据库中比较重要的操作,如CRUD(插入,查询,更新,删除)。
有关Mybatis具体生成事项,可以参考官方文档
核心包下载地址:进入下载

使用MBG生成文件

1.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>
	<!-- 配置数据库中链接的包 -->
	<!-- <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" 
		/> -->

	<context id="MyGenerator" targetRuntime="MyBatis3">
	<!-- 这个标签可以去掉  -->
	<commentGenerator>
		<!--去掉注释 -->
		<property name="suppressAllComments" value="true"/>
		<!-- 去掉时间戳 -->
		<property name="suppressDate" value="true"/>
	</commentGenerator>
		<!-- 数据库连接信息 -->
		<!-- ?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/db_ssm_mybatis?useUnicode=true&amp;characterEncoding=utf8"
			userId="root" 
			password="123456" >
		</jdbcConnection>
		<!-- Java JDBC数据类型转换 -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- javaModelGenerator Javabean 配置 -->
		<!-- targetPackage 输出包名 输出路径 -->
		<!-- targetProject输出项目位置 -->
		<javaModelGenerator
			targetPackage="pers.goodwin.mybatis.bean" targetProject="src">
			<!-- enableSubPackages是否开启子包名称 是否在包名后面加上scheme名称 -->
			<property name="enableSubPackages" value="false" />
			<!-- 在set中加入.trim -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		<!-- mapper.xml配置 -->
		<sqlMapGenerator targetPackage="pers.goodwin.mybatis.mapper"
			targetProject="src">
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		<!-- Java接口配置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="pers.goodwin.mybatis.mapper" targetProject="src">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>
		<!-- 数据表 根据数据库中的表生成 -->
		<table tableName="t_user" />
		<table tableName="t_country" />
		<!-- 
		<table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >
			<property name="useActualColumnNames" value="true"/> 
			<generatedKey column="ID" sqlStatement="DB2" identity="true" /> 
			<columnOverride column="DATE_FIELD" property="startDate" /> 
			<ignoreColumn column="FRED" /> 
			<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> 
		</table> 
		-->

	</context>
</generatorConfiguration>

2.核心代码

List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("src/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);

3.生成文件

运行核心代码生成Java bean 文件、mapper.java 文件和mapper.xml。
在这里插入图片描述

使用生成的文件对数据库进行操作

示例1

@Test
public void Test1() throws IOException {
	InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
	SqlSessionFactoryBuilder ssb = new SqlSessionFactoryBuilder();
	SqlSessionFactory sqlSessionFactory = ssb.build(inputStream);
	SqlSession sqlSession = sqlSessionFactory.openSession();
	TUserMapper mapper = sqlSession.getMapper(TUserMapper.class);
	TUser user = mapper.selectByPrimaryKey(1);
	System.out.println(user);
}

输出:

Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@dd0c991]
==>  Preparing: select u_id, u_username, u_password, u_gender, u_cid from t_user where u_id = ?
==> Parameters: 1(Integer)
<==      Total: 1
TUser [uId=1, uUsername=隔壁老王, uPassword=6666666, uGender=0, uCid=1]

示例2

@Test
//按条件查询
public void Test2() throws IOException {
	InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
	SqlSessionFactoryBuilder ssb = new SqlSessionFactoryBuilder();
	SqlSessionFactory sqlSessionFactory = ssb.build(inputStream);
	SqlSession sqlSession = sqlSessionFactory.openSession();
	TUserMapper mapper = sqlSession.getMapper(TUserMapper.class);
	
	TUserExample example = new TUserExample();
//	example.createCriteria().andUGenderEqualTo(0);
	example.createCriteria().andUGenderEqualTo(0).andUUsernameLike("%王%");
	List<TUser> list = mapper.selectByExample(example);
	for (TUser tUser : list) {
		System.out.println(tUser);
	}
}

输出:

Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@1b1426f4]
==>  Preparing: select u_id, u_username, u_password, u_gender, u_cid from t_user WHERE ( u_gender = ? and u_username like ? )
==> Parameters: 0(Integer), %%(String)
<==      Total: 2
TUser [uId=1, uUsername=隔壁老王, uPassword=6666666, uGender=0, uCid=1]
TUser [uId=5, uUsername=王八, uPassword=3232, uGender=0, uCid=4]

示例3

@Test
public void Test3() throws IOException {
	InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
	SqlSessionFactoryBuilder ssb = new SqlSessionFactoryBuilder();
	SqlSessionFactory sqlSessionFactory = ssb.build(inputStream);
	SqlSession sqlSession = sqlSessionFactory.openSession();
	TUserMapper mapper = sqlSession.getMapper(TUserMapper.class);
	TUser user = new TUser();
	user.setuUsername("关羽");
	user.setuPassword("123");
	user.setuGender(0);
	user.setuCid(1);
	mapper.insertSelective(user);
	sqlSession.commit();
}

输出:

==>  Preparing: insert into t_user ( u_username, u_password, u_gender, u_cid ) values ( ?, ?, ?, ? )
==> Parameters: 关羽(String), 123(String), 0(Integer), 1(Integer)
<==    Updates: 1
Committing JDBC Connection [com.mysql.jdbc.JDBC4Connection@69e153c5]

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值