详解MyBatis Generator自动创建代码(dao,mapping,poji)

下面我将详细讲解MyBatis Generator自动创建代码的完整攻略,包括使用步骤和示例说明。

MyBatis Generator是什么

MyBatis Generator是MyBatis框架家族中的一员,是一款自动生成MyBatis持久层代码(Mapper接口和Mapper XML文件)的工具。它是根据数据库表结构自动生成对应的JavaBean、Mapper接口及Mapper XML文件。

MyBatis Generator使用步骤

1.编写MyBatis Generator Config.xml文件

在生成代码之前,需要编写配置文件MyBatis Generator Config.xml。该文件描述了数据库连接信息、待生成代码的表字段信息以及生成代码的相关属性配置等。

在文件中需要进行以下配置:
- 数据库连接信息:用户名、密码、JDBC驱动和JDBC连接URL。
- 待生成代码的表:需要指定Java对象、Mapper接口和Mapper XML文件生成到哪个包下,以及待操作的数据库表和表中那些字段需要映射到Java对象属性。
- 生成代码配置:指定生成的Java对象、Mapper接口和Mapper XML文件的文件名前缀、后缀等信息。

2.执行MyBatis Generator

完成Config.xml文件的编写之后,将该文件保存到指定路径下,执行以下命令生成代码:

java -jar mybatis-generator-core-x.x.x.jar -configfile path/to/Config.xml -overwrite

其中,path/to/Config.xml是Config.xml文件所在的路径,-overwrite参数表示覆盖已有代码。

3.查看生成的代码

生成代码结束后,我们可以到指定路径下查看生成的Java对象、Mapper接口和Mapper XML文件。

MyBatis Generator的示例说明

以下为两个使用MyBatis Generator自动生成代码的示例:

示例1:生成单表的Java对象、Mapper接口和Mapper XML文件

1.创建数据库表

在Mysql数据库下创建person表,表结构如下:

CREATE TABLE person (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(45) DEFAULT NULL,
  age int(11) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

2.编写Config.xml文件

在Config.xml文件中,我们需要配置数据库连接信息、待生成代码的表及各个文件的生成路径等。

以下为示例的Config.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="MysqlTables" targetRuntime="MyBatis3">
    <!-- 数据库链接 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/test"
        userId="root"
        password="root">
    </jdbcConnection>

    <javaModelGenerator targetPackage="com.example.demo.model" targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="com.example.demo.mapper" targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo.mapper"  targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <table schema="test" tableName="person" domainObjectName="Person">
      <property name="useActualColumnNames" value="false"/>
      <generatedKey column="id" sqlStatement="MySql" identity="true" />
    </table>

  </context>
</generatorConfiguration>

3.执行MyBatis Generator

执行以下命令生成代码:

java -jar mybatis-generator-core-x.x.x.jar -configfile path/to/Config.xml -overwrite

生成的Java对象、Mapper接口和Mapper XML文件查看src/main/java包和src/main/resources包。

示例2:生成多表关联的Java对象、Mapper接口和Mapper XML文件

1.创建数据库表

在Mysql数据库中,创建person和address两个表,表结构分别如下:

CREATE TABLE person (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(45) DEFAULT NULL,
  age int(11) DEFAULT NULL,
  address_id int(11) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY address_id (address_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE address (
  id int(11) NOT NULL AUTO_INCREMENT,
  city varchar(45) DEFAULT NULL,
  area varchar(45) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

2.编写Config.xml文件

在Config.xml文件中,我们需要配置数据库连接信息、待生成代码的表及各个文件的生成路径等。

以下为示例的Config.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="MysqlTables" targetRuntime="MyBatis3">
    <!-- 数据库链接 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/test"
        userId="root"
        password="root">
    </jdbcConnection>

    <javaModelGenerator targetPackage="com.example.demo.model" targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="com.example.demo.mapper" targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo.mapper"  targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <table schema="test" tableName="person" domainObjectName="Person">
      <property name="useActualColumnNames" value="false"/>
      <generatedKey column="id" sqlStatement="MySql" identity="true" />
      <property name="selectAllOrderByClause" value="id asc"/>
      <property name="enableCountByExample" value="false"/>
      <property name="enableUpdateByExample" value="false"/>
      <property name="enableDeleteByExample" value="false"/>
      <property name="enableSelectByExample" value="false"/>
    </table>

    <table schema="test" tableName="address" domainObjectName="Address">
      <property name="useActualColumnNames" value="false"/>
      <generatedKey column="id" sqlStatement="MySql" identity="true" />
      <property name="selectAllOrderByClause" value="id asc"/>
      <property name="enableCountByExample" value="false"/>
      <property name="enableUpdateByExample" value="false"/>
      <property name="enableDeleteByExample" value="false"/>
      <property name="enableSelectByExample" value="false"/>
    </table>

    <table schema="test" tableName="person" domainObjectName="PersonAddress">
      <property name="useActualColumnNames" value="false"/>
      <generatedKey column="id" sqlStatement="MySql" identity="true" />
      <property name="selectAllOrderByClause" value="id asc"/>
      <property name="enableCountByExample" value="false"/>
      <property name="enableUpdateByExample" value="false"/>
      <property name="enableDeleteByExample" value="false"/>
      <property name="enableSelectByExample" value="false"/>

      <join tableName="address" alias="a" optional="true" >
        <columnOverride column="id" property="address.id"/>
        <columnOverride column="city" property="address.city"/>
        <columnOverride column="area" property="address.area"/>
        <leftJoin tableName="person">
          <columnOverride column="address_id" property="person.id"/>
        </leftJoin>
      </join>
    </table>

  </context>
</generatorConfiguration>

3.执行MyBatis Generator

执行以下命令生成代码:

java -jar mybatis-generator-core-x.x.x.jar -configfile path/to/Config.xml -overwrite

生成的Java对象、Mapper接口和Mapper XML文件查看src/main/java包和src/main/resources包。此外生成的文件名可能会遇到覆盖问题,需要及时的进行调整。

以上是关于MyBatis Generator自动创建代码的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解MyBatis Generator自动创建代码(dao,mapping,poji) - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • eclipse/intellij idea 远程调试hadoop 2.6.0

    下面是关于“eclipse/intellij idea 远程调试hadoop 2.6.0”的完整攻略: 简介 在分布式系统开发过程中,我们可能需要对运行在远端的Hadoop集群上的代码进行调试。这时,我们就需要进行远程调试。本文将介绍如何使用Eclipse/IntelliJ IDEA进行远程调试Hadoop 2.6.0,以及具体的步骤和示例。 调试前准备 配…

    Java 2023年5月20日
    00
  • Java同学找工作最懵圈的问题:到底啥是分布式系统开发经验?(推荐)

    Java同学找工作最懵圈的问题:到底啥是分布式系统开发经验? 什么是分布式系统? 在计算机领域,分布式系统(Distributed System)是由多个相互连接、通过共享资源、进行协调工作的计算机组成的系统。它们通过网络互相通信和协调,以执行各种任务。分布式系统有许多优点,比如高可用性、性能扩展、容错性和灵活性等。 什么是分布式系统开发? 分布式系统开发是…

    Java 2023年5月30日
    00
  • Java快速排序与归并排序及基数排序图解示例

    Java快速排序与归并排序及基数排序图解示例 快速排序、归并排序和基数排序是算法中常用的排序方法,以下分别进行详细讲解。 快速排序 快速排序是一种分治算法,其基本思想是将一个大的数据序列分成两个小的数据序列。具体做法是通过递归实现的,在每次递归时选定一个基准数(通常选第一个或者最后一个数),将整个序列中小于基准数的数放在基准数左边,大于基准数的数放在基准数右…

    Java 2023年5月19日
    00
  • Java Collections.shuffle()方法案例详解

    Java Collections.shuffle()方法案例详解 在 Java 中,通常我们需要对数据集合进行一些元素的顺序处理,例如给一个列表的元素混淆顺序。Java Collections Framework 提供了许多工具类来帮助我们处理各种集合对象。其中,Collections 类拥有许多静态方法,其中 shuffle() 方法就是一种非常有用的工具…

    Java 2023年5月26日
    00
  • PHP的SQL注入过程分析

    下面我将为您详细讲解PHP的SQL注入过程分析的完整攻略,包含以下几个部分: SQL注入的概念和危害 SQL注入攻击方式和示例说明 防范SQL注入的方法 1. SQL注入的概念和危害 SQL注入是一种通过在应用程序中注入SQL语句来达到欺骗数据库执行恶意操作的攻击手段,攻击者可以通过 SQL注入攻击窃取数据、修改数据或者破坏数据。 SQL注入的危害表现为:用…

    Java 2023年6月15日
    00
  • 亲手带你解决Debug Fastjson的安全漏洞

    下面我将为你讲解如何解决Fastjson的安全漏洞。 什么是Fastjson的漏洞? Fastjson是一款被广泛使用的Java JSON解析器和生成器。然而,在Fastjson中存在一些安全漏洞,使得攻击者可以利用它来执行远程代码、绕过安全措施、拒绝服务攻击等。为了保护我们的应用程序免受这些漏洞的影响,我们需要及时采取措施来解决这些漏洞问题。 解决Fast…

    Java 2023年6月15日
    00
  • 详解Java类加载器与双亲委派机制

    详解Java类加载器与双亲委派机制 Java类加载器是Java虚拟机(JVM)的一个重要组成部分。类加载器负责将class文件从文件系统、网络等位置加载到内存中的虚拟机中,从而使得Java程序能够正确运行。在Java中,类加载器采用了“双亲委派机制”(Parent Delegation Model)来管理和加载类。 双亲委派机制 Java类加载器通过双亲委派…

    Java 2023年6月15日
    00
  • Mybatis源码分析之插件模块

    “Mybatis源码分析之插件模块”是一篇深入剖析Mybatis插件模块的文章。总的来说,Mybatis插件模块的实现流程可以概括为下面四个核心类别:Interceptor、InterceptorChain、Plugin和Invocation。 Interceptor接口:插件必须实现的接口,提供了intercept()方法以便拦截Mybatis的方法调用。…

    Java 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部