MyBatis加强(1)~mybatis的代码生成器 Generator
原创
©著作权归作者所有:来自51CTO博客作者一乐yile的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、mybatis的代码生成器 Generator
✿ 介绍:
MyBatis Generator 简称 MBG
,是一个专门为 iBatis、MyBatis 框架使用者提供的代码生成器,
可以快速根据表生成对应的模型对象、Mapper接口、Mapper文件,甚至生成 QBC 风格
查询对象。
MBG 支持基本的增删改查操作,也支持 QBC 风格的条件查询,但是复杂的查询还是需要我们写 SQL。
■ 运行 MyBatis Generator:
□ 方式一:使用 Java 代码运行(目前选用)
□ 方式二:使用 Maven 插件运行(项目中选用)
✿ mybatis的Generator使用:
① 拷贝jar包
② MGB的配置 genratorConfig.xml [包含生成代码的配置参数]
③ 运行MGB:方式一(使用 Java 代码运行) 方式二(使用 Maven 插件运行)
1、配置详解:
■ genratorConfig.xml 文件【常用的配置】:
- genratorConfig.xml 文件的Context元素的属性 targetRuntime="MyBatis3Simple"
- 使用的时候要注意:
- 元素 jdbcConnection连接数据库的四要素(注意数据库的名称)
- 元素 javaModelGenerator 生成domain对象的targetPackage 和 targetProject
- 元素 sqlMapGenerator 生成Mapper文件的targetPackage 和 targetProject
- 元素 javaClientGenerator 生成Mapper接口的targetPackage 和 targetProject
- 元素 table的tableName表名
version="1.0" encoding="UTF-8"?>
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple">
<property name="javaFileEncoding" value="UTF-8" />
<property name="beginningDelimiter" value="`" />
<property name="endingDelimiter" value="`" />
<commentGenerator>
<property name="suppressDate" value="true" />
<property name="suppressAllComments" value="true" />
commentGenerator>
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatisdemo"
userId="root"
password="admin">
jdbcConnection>
<javaModelGenerator targetPackage="com.shan.mybatis.demo.domain" targetProject="src">
<property name="enableSubPackages" value="true" />
javaModelGenerator>
<sqlMapGenerator targetPackage="com.shan.mybatis.demo.mapper" targetProject="resources">
<property name="enableSubPackages" value="true" />
sqlMapGenerator>
<javaClientGenerator targetPackage="com.shan.mybatis.demo.mapper" type="XMLMAPPER" targetProject="src">
<property name="enableSubPackages" value="true" />
javaClientGenerator>
<table tableName="t_user2" delimitIdentifiers="true" domainObjectName="TableUser">
<property name="useActualColumnNames" value="true" />
<generatedKey column="id" sqlStatement="JDBC" />
table>
context>
generatorConfiguration>
2、启动类 Generator:
public class Generator {
public static void main(String[] args) throws Exception {
//MBG执行过程中的警告信息
List<String> warnings = new ArrayList<String>();
//生成代码重复时,是否覆盖源代码
boolean override = false;
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(in);
DefaultShellCallback callback = new DefaultShellCallback(override);
//创建MBG
MyBatisGenerator mbg = new MyBatisGenerator(config, callback, warnings);
mbg.generate(null);
//输出警告信息
for (String warn : warnings) {
System.out.println(warn);
}
}
}
■ 运行MBG 生成了domain类、mapper接口和mapper.xml 文件
■ 细节:数据库的表名t_user2,生成对象变成TUser2【可以把数据库的表名取名为user----》生成对象User】
- MBG遇到下划线,使用驼峰法表示,还有MBG默认大小写不敏感,列名---》属性名全小写(设置一下属性useActualColumnNames即可大小写敏感):
表
| 对象
|
表名使用下划线(t_user)
| TUser
|
列名使用驼峰法
| 默认大小写不敏感,全小写
|
3、QBC案例:
■ QBC 风格:Query By Criteria 一种查询方式,比较面向对象,看不到sql语句
- 主要由Criteria、Example 组成,使用面向对象的方式区域拼接查询条件,一般
适合简单查询
(单表查询)。 - genratorConfig.xml 文件的Context元素的属性 targetRuntime="MyBatis3" 可以生成带有条件的增删改查,缺省
■ 测试例子:
@Test
public void testQuery() {
SystemUserMapper mapper = MyBatisUtil.getMapper(SystemUserMapper.class);
// //查询id为2的员工
// SystemUserKey key = new SystemUserKey();
// key.setId(2L);
// mapper.selectByPrimaryKey(key);
//查询userType在2-10之间
//查询条件example
SystemUserExample example = new SystemUserExample();
//查询规则criteria
Criteria criteria = example.createCriteria();
criteria.andUserTypeBetween(2, 3);
//模糊查询
criteria.andUsernameLike("明");
mapper.selectByExample(example);
}
作者:一乐乐