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日

相关文章

  • 抖音实物福袋怎么开通?开通抖音福袋图文教程

    以下是“抖音实物福袋怎么开通?开通抖音福袋图文教程”的完整攻略: 抖音实物福袋怎么开通? 抖音实物福袋是指在抖音平台上开通的一种福利活动,用户可以通过购买福袋获得实物奖品。如果需要开通抖音实物福袋,可以按照以下步骤进行: 打开抖音:在手机上打开抖音。 进入个人中心:在抖音首页上,点击右下角的“我”按钮,进入个人中心。 进入钱包:在个人中心中,点击“钱包”按钮…

    html 2023年5月18日
    00
  • winPE系统启动时出现乱码(编码是ANSI)怎么办

    针对“winPE系统启动时出现乱码(编码是ANSI)怎么办”的问题,我将提供以下攻略: 问题描述 当使用winPE系统启动时,可能会出现乱码的情况,此时文本编码格式可能是ANSI,导致文本无法正确显示。 解决方法 方法1: 替换乱码字体文件 下载适用于winPE系统的字体文件,比如微软雅黑等中文字体。 将下载的字体文件(xxxx.ttf)拷贝到winPE系统…

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

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

    html 2023年5月30日
    00
  • Python xpath表达式如何实现数据处理

    Python中使用xpath表达式可以轻松地实现对网页的数据进行处理和提取。下面将分为以下几个步骤介绍如何使用Python的xpath库对数据进行处理。 步骤一:获取HTML文本 要进行xpath数据处理,首先需要得到HTML文本。可以使用Python中的requests库来获取网页的HTML文本。 import requests from lxml imp…

    html 2023年5月31日
    00
  • js 加载并解析XML字符串的代码

    首先,要加载并解析XML字符串,需要使用JavaScript里的XML解析器(XML Parser)。XML解析器可以将XML代码解析为JavaScript对象,方便文档的访问和操作。 以下是使用XML解析器的代码示例: // 创建XML解析器 let parser = new DOMParser(); // 定义一个XML字符串 let xmlString…

    html 2023年5月30日
    00
  • springboot页面国际化配置指南

    下面我将详细讲解“Spring Boot 页面国际化配置指南”的完整攻略。 前言 在当前的全球化时代,应用程序需要支持多种语言和文化,因此国际化已成为开发项目的一个重要特性。Spring Boot 提供了一种非常方便的方式来实现页面国际化,本文将介绍如何在 Spring Boot 中配置页面国际化,帮助开发者更好地支持不同语言和文化环境。 步骤 1. 创建资…

    html 2023年5月30日
    00
  • flash怎么修改XML文档的数据?

    要修改Flash中XML文档的数据,可以借助AS3中提供的XML类,具体的步骤如下: 1. 导入XML文件并解析 首先,需要使用AS3中的Loader类或URLLoader类将XML文件导入到Flash中,并使用XML类解析该文档。可以使用以下代码实现: var loader:URLLoader = new URLLoader(); loader.load(…

    html 2023年5月30日
    00
  • 腾讯健康系统实名认证怎么修改?QQ健康系统怎么修改身份信息

    要修改腾讯健康系统的实名认证信息,可以按照以下步骤进行操作: 登录腾讯健康系统:首先,您需要登录腾讯健康系统。在登录页面中,输入您的手机号码和密码,然后点击“登录”按钮。 进入实名认证页面:在登录成功后,您可以在腾讯健康系统中找到“我的”选项,然后选择“个人信息”选项。在个人信息页面中,您可以找到“实名认证”选项,点击进入实名认证页面。 修改实名认证信息:在…

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