MBG简介
- MyBatis Generator 简称 MBG。
- 是一个专门为MyBatis框架使用者定制的代码生成器。
- 可以快速的根据表生成对应的映射文件、接口、JavaBean。
- 支持基本的CRUD操作以及QBC风格的条件查询。
- 但表连接、存储过程等复杂sql仍需要开发人员手工编写。
MBG使用
步骤:
- 编写MBG的配置文件。
- 1.
jdbcConnection
配置数据库连接信息。- 2.
javaModelGenerator
配置JavaBean的生成策略。- 3.
sqlMapGenerator
配置sql映射文件生成策略。- 4.
javaClientGenerator
配置Mapper接口的生成策略。- 5.
table
配置要逆向解析的数据表。
- tableName:表名
- domainObjectName:对应的JavaBean名
- 运行代码生成器生成代码。
Context标签
targetRuntime="MyBatis3"
可生成 带条件的 CRUD。(推荐)targetRuntime="MyBatis3Simple"
可生成 基本的 CRUD。
==若想再次生成,需将之前生成的xxxMapper.xml
删除。==
MBG配置文件
- generatorConfig.xml (mbg.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">
<!--
MBG生成的文件
User.java
UserExample.java
UserMapper.java
UserMapper.xml
-->
<generatorConfiguration>
<!--加载jdbc属性文件-->
<properties resource="jdbc.properties"/>
<!--设置要使用的Java文件的编码-->
<property name="javaFileEncoding" value="UTF-8"/>
<!--
<property name="autoDelimitKeywords" value="true"/>
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
-->
<context id="DB2Tables" targetRuntime="MyBatis3" defaultModelType="flat">
<!--重写equals()和hashCode()-->
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"/>
<!--重写toString()-->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!--序列化-->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<!--缓存-->
<plugin type="org.mybatis.generator.plugins.CachePlugin"/>
<!-- 注释 -->
<commentGenerator>
<!-- 阻止生成注释 -->
<property name="suppressAllComments" value="true"/>
<!-- 阻止生成的注释包含时间戳-->
<property name="suppressDate" value="true"/>
<!-- 注释是否添加数据库表的备注信息-->
<property name="addRemarkComments" value="false"/>
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}"
password="${jdbc.password}"/>
<!-- 类型解析器 -->
<!-- 默认false:把JDBC DECIMAL 和 NUMERIC 类型解析为java.lang.Integer
true:把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal
-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成model的包名和位置 -->
<javaModelGenerator targetPackage="org.yun.webstart.domain"
targetProject="src\main\java">
<!-- 是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true"/>
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成 xxxMapper.xml文件的包名和位置 -->
<sqlMapGenerator targetPackage="org.yun.webstart.dao"
targetProject="src\main\resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成xxxMapper的包名和位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="org.yun.webstart.dao"
targetProject="src\main\java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成哪些表 -->
<table tableName="t_user" domainObjectName="User"/>
<!--生成全部表-->
<!--<table tableName="%"/>-->
</context>
</generatorConfiguration>
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root
生成器代码
public class Main {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File file = new File("src/main/resources/generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration cfg = cp.parseConfiguration(file);
DefaultShellCallback dsc = new DefaultShellCallback(overwrite);
MyBatisGenerator mbg = new MyBatisGenerator(cfg,dsc,warnings);
mbg.generate(null);
System.out.println("success...");
}
}
或者在pom.xml加入
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.19</version>
</dependency>
</dependencies>
</plugin>
然后
QBC风格带条件查询
@Test
public void test01(){
SqlSession session = build.openSession();
DeptMapper mapper = session.getMapper(DeptMapper.class);
DeptExample example = new DeptExample();
//所有的条件都在example中封装
Criteria criteria = example.createCriteria();
//select id, deptName, locAdd from tbl_dept WHERE ( deptName like ? and id > ? )
criteria.andDeptnameLike("%部%");
criteria.andIdGreaterThan(2);
List<Dept> list = mapper.selectByExample(example);
for (Dept dept : list) {
System.out.println(dept);
}
}
来源:oschina
链接:https://my.oschina.net/mondayer/blog/4319819