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

yizhihongxing

下面我将详细讲解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日

相关文章

  • spring boot RestTemplate 发送get请求的踩坑及解决

    关于“spring boot RestTemplate 发送get请求的踩坑及解决”的完整攻略,我将分为以下几个部分逐一进行讲解: 介绍RestTemplate发送get请求的基本用法 分析在发送get请求时可能遇到的踩坑 解决get请求中可能遇到的问题 最后,提供至少两个示例说明。 1. RestTemplate发送get请求的基本用法 RestTempl…

    Java 2023年5月26日
    00
  • java_object的简单使用详解

    Java对象的简单使用详解 什么是Java对象 在Java中,对象是存储数据和方法的数据结构。它是一个使用类或者接口定义的实例,具有属性和行为。在Java中,对象是用于封装数据和行为的任何实体。对象由状态和行为组成。 创建Java对象 在Java中,使用new操作符来创建一个对象。下面是一个创建Java对象的例子: MyObject obj = new My…

    Java 2023年5月26日
    00
  • Struts中action线程安全问题解析

    Struts中action线程安全问题解析 背景 Struts是Java Web应用程序的开发框架之一,它采用了MVC的设计模式,其中Action作为控制器部分的一部分,负责处理用户请求并返回响应。在使用Struts进行Web应用程序开发时,一个常见的问题是:是否需要考虑Action的线程安全性?当有多个用户同时发出请求时,是否会出现线程安全问题? 问题分析…

    Java 2023年5月20日
    00
  • Java反射机制详解

    Java反射机制详解 什么是Java反射 Java反射机制是指在程序运行过程中,通过获取对象的类信息,来操作改变对象的方法和属性。它能够使得程序在运行时才能得到要操作的类的相关信息,而不是在编写代码时就必须确定类的信息。Java反射机制主要由Java.lang.refect 包中的类和接口组成。 反射的优缺点 优点: 运行时动态地操作和处理类的属性和方法,增…

    Java 2023年5月20日
    00
  • Java Runtime用法实战案例

    Java Runtime是Java语言提供的一个类库,位于java.lang包中,它提供了访问JVM进程的API,可以执行系统命令,启动新的进程等功能。 获取Runtime实例 Runtime runtime = Runtime.getRuntime(); 通过调用Runtime.getRuntime()方法可以获取当前Java虚拟机的Runtime实例。 …

    Java 2023年5月23日
    00
  • ajax 动态传递jsp等页面使用id辨识传递对象

    使用Ajax技术动态传递JSP等页面使用ID辨识传递对象的过程可以分为以下几个步骤: 创建XMLHttpRequest对象 XMLHttpRequest对象是用于在后台与服务器交换数据的核心对象。在使用Ajax技术时,首先需要创建一个XMLHttpRequest对象,代码如下: var xmlhttp; if (window.XMLHttpRequest) …

    Java 2023年6月15日
    00
  • JS获取计算机mac地址以及IP的实现方法

    获取计算机的MAC地址和IP地址,可以使用JavaScript来实现。不过需要注意的是,这些信息只能从请求发起的客户端获取,而无法从服务器端获取。下面是具体的实现方法: 获取IP地址 获取IP地址的方法比较简单,可以通过访问某些特定的网站来获取。常用的方法是使用httpbin.org提供的IP地址查询API。具体步骤如下: 构造一个GET请求,访问”http…

    Java 2023年6月15日
    00
  • Java代码为例讲解堆的性质和基本操作以及排序方法

    Java代码为例讲解堆的性质和基本操作以及排序方法 什么是堆? 堆(Heap)是一种基于二叉树的数据结构,常用于排序和优先级队列中。堆又分为大根堆和小根堆,大根堆满足任意节点的值都不大于其父节点的值,小根堆则相反。这里我们以大根堆为例。 堆的基本操作 插入元素 堆的插入操作是往堆中添加新值并保证堆的性质不变。具体实现如下: public void inser…

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