Mybatis Generator(MBG)实战详解
Mybatis Generator(简称MBG)是一个基于Mybatis框架的代码生成器。MBG可以帮助开发者快速生成DAO(Data Access Object)层的代码。本文将详细讲解MBG的使用方法,力求使初学者也能轻松上手。
安装MBG
MBG可以通过Maven直接引入。在项目的pom.xml中加入以下依赖:
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
配置MBG
MBG的配置文件是一个XML文件。在项目的resources文件夹下新建一个名为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>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!--数据库连接信息 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis_test?useUnicode=true&characterEncoding=utf-8&useSSL=false" userId="root" password="123456"/>
<!--默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.example.mybatis.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.example.mybatis.mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--mapper.xml映射文件中的mapper接口生成位置,注意与需要手写的mapper接口放在同一个包下,该配置可省略 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mybatis.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 生成表开始-->
<table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<!--<generatedKey column="id" sqlStatement="Mysql" identity="true"/>-->
<!--数据模型model列名与数据库保持一致,不生成getter和setter方法 -->
<columnOverride column="id" javaType="String" jdbcType="VARCHAR"/>
<columnOverride column="name" javaType="String" jdbcType="VARCHAR"/>
<columnOverride column="age" javaType="int" jdbcType="INTEGER"/>
</table>
<!-- 生成表结束-->
</context>
</generatorConfiguration>
上面的配置生成了一个名为User的实体类,以及对应的Mapper接口和Mapper映射文件。
运行MBG
在项目根目录下新建一个Main类,填写以下代码:
public class Main {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("src/main/resources/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);
}
}
运行这个Main类,即可生成DAO层代码。
示例1
假设我们有一个用户表user,有以下字段:
- id: 主键id
- name: 用户名
- age: 年龄
- gender: 性别
我们要生成对该表的操作,即User实体类和对应的Mapper接口和Mapper映射文件,可将generatorConfig.xml中的配置中table节点的tableName属性值改为user:
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 数据库连接信息等 -->
<table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<columnOverride column="id" javaType="String" jdbcType="VARCHAR"/>
<columnOverride column="name" javaType="String" jdbcType="VARCHAR"/>
<columnOverride column="age" javaType="int" jdbcType="INTEGER"/>
<columnOverride column="gender" javaType="String" jdbcType="VARCHAR"/>
</table>
</context>
</generatorConfiguration>
示例2
假设我们有一个订单表order,有以下字段:
- id: 主键id
- user_id: 用户id
- amount: 订单金额
- status: 订单状态
我们要生成对该表的操作,即Order实体类和对应的Mapper接口和Mapper映射文件,可将generatorConfig.xml中的配置中table节点的tableName属性值改为order:
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 数据库连接信息等 -->
<table tableName="order" domainObjectName="Order" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<columnOverride column="id" javaType="String" jdbcType="VARCHAR"/>
<columnOverride column="user_id" javaType="String" jdbcType="VARCHAR"/>
<columnOverride column="amount" javaType="BigDecimal" jdbcType="DECIMAL"/>
<columnOverride column="status" javaType="int" jdbcType="INTEGER"/>
</table>
</context>
</generatorConfiguration>
以上就是MBG的实战详解。只要能够熟练掌握配置文件的格式,并且对数据库表结构有一定的理解,即可轻松生成DAO层代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis代码生成器Mybatis Generator(MBG)实战详解 - Python技术站