Mybatis代码生成器Mybatis Generator(MBG)实战详解

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&amp;characterEncoding=utf-8&amp;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技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • Java解析XML的四种方式

    下面就来详细讲解一下Java解析XML的四种方式。 一、DOM方式 DOM方式是将整个XML文档读入内存,形成一棵树状结构(DOM树),然后对整个树进行操作。对于较小的XML文件,DOM方式效率较高,但是对于较大的XML文件则会消耗较多的内存。下面是一个DOM方式解析XML的示例: // 创建一个DocumentBuilderFactory对象 Docume…

    html 2023年5月30日
    00
  • HTML5新增的表单元素和属性实例解析

    HTML5新增了一些表单元素和属性,提高了用户使用表单的体验和开发者对表单验证和数据收集的支持。本文将详细讲解这些新增的表单元素和属性。 一、新增的表单元素 1.1 datalist元素 datalist元素用于定义用户可以从中选择输入值的选项列表。它可以与input元素的list属性一起使用,让用户从预定义的选项中选择一个值,而不是手动输入。示例如下: &…

    html 2023年5月30日
    00
  • 怎么看手机生产日期 手机生产日期查询方法

    以下是查看手机生产日期的详细攻略: 步骤1:查看手机IMEI号码 打开您的手机拨号界面,输入“*#06#”号码,即可查看您的手机IMEI号码。 如果您的手机无法使用拨号界面查看IMEI号码,可以在手机设置中查找“关于手机”或“状态”选项,然后查看IMEI号码。 步骤2:查询手机生产日期 打开您的浏览器,访问IMEI查询网站(例如https://www.ime…

    html 2023年5月17日
    00
  • JavaScript XML实现两级级联下拉列表

    下面我将为你详细讲解“JavaScript XML实现两级级联下拉列表”的完整攻略。 简介 级联下拉列表指的是一个下拉列表的选项内容与上一个下拉列表的选择项相关联,通过选择上一个下拉列表中的某个选项,动态改变下一个下拉列表的选项内容。在本文中,我们将通过 JavaScript XML 实现两级级联下拉列表。 步骤 准备数据级联下拉列表的实现需要准备一组数据,…

    html 2023年5月30日
    00
  • 小红书怎么样才能有收益

    以下是“小红书怎么样才能有收益”的完整攻略: 小红书怎么样才能有收益 小红书是一款社交电商平台,用户可以在平台上分享自己的购物心得和体验,并通过推广商品获得收益。下面是小红书怎么样才能有收益的攻略。 成为小红书达人 成为小红书达人是获得收益的前提条件之一。小红书达人是指在小红书上有一定影响力的用户,他们的分享和推荐可以影响其他用户的购买决策。成为小红书达人需…

    html 2023年5月18日
    00
  • Mybatis的mapper.xml中if标签test判断的用法说明

    Mybatis的mapper.xml中if标签test判断非常常用,用于根据条件动态拼接sql语句。下面我将详细讲解该标签的用法。 基本用法 在mapper.xml中,可以使用if标签来添加条件判断,语法如下: <select id="selectUserByCondition" parameterType="map&qu…

    html 2023年5月30日
    00
  • ios8开发者账号怎么注册?ios8苹果开发者账号注册申请流程

    以下是iOS8开发者账号注册的完整攻略: 访问苹果开发者网站:首先,您需要访问苹果开发者网站(https://developer.apple.com/)。如果您还没有苹果开发者账号,请选择“创建您的Apple ID”选项,然后按照提示进行操作。如果您已经有苹果ID,请选择“登录”选项,然后使用您的苹果ID和密码登录。 注册为苹果开发者:在登录之后,您需要注册…

    html 2023年5月17日
    00
  • Windows系统运行库/游戏运行库组件怎么补全?

    Windows系统运行库/游戏运行库组件是一些必要的组件,它们可以帮助您的计算机运行各种软件和游戏。如果您的计算机缺少某些运行库组件,可能会导致软件或游戏无法正常运行。以下是补全Windows系统运行库/游戏运行库组件的攻略: 使用Windows Update更新系统:Windows Update是Windows系统自带的更新程序,可以帮助您更新系统和安装缺…

    html 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部