详解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日

相关文章

  • 服务启动超时控制

    服务启动超时控制 问题描述: 服务有时存在等待很长时间起不来的情况,需要手动kill掉进程,然后再起一遍。 1 使用timeout指定命令运行的超时时间 timeout 30s java -jar while-1.0-SNAPSHOT.jar 脚本 #!/bin/bash timeout 30s java -jar while-1.0-SNAPSHOT.ja…

    Java 2023年4月27日
    00
  • Android Activity生命周期详解

    下面是关于“Android Activity生命周期详解”的完整攻略。 简介 很多初学者在学习 Android 开发时容易被 Activity 的生命周期所迷惑。但实际上,了解生命周期可以帮助我们更好地理解 Activity 的内部操作以及增强应用程序的用户体验。 Activity 的生命周期由一系列的阶段组成,从 Activity 的启动到关闭,包括一些生…

    Java 2023年6月15日
    00
  • java实现简单租车系统

    Java实现简单租车系统攻略 1.需求分析 租车系统需要考虑的功能有: 汽车种类和数量的分类管理 用户租车和归还车辆的操作 计算租车费用 根据以上需求,我们需要有以下的类: Car:汽车类,用于描述汽车对象的基本属性,如品牌、型号、日租金等。 CarRentSystem:租车系统类,用于管理汽车的分类、添加、删除和租用操作等。 User:用户类,用于描述租车…

    Java 2023年5月19日
    00
  • ibatis简单实现与配置

    ibatis(现在名为MyBatis)是一种简单、易用、易学的持久化框架,可以用于Java语言编写的应用程序中。它广泛应用于企业级Java应用程序的数据访问层中,以提供一种简单的方式来访问和操作关系型数据库的数据。下面就让我来详细讲解ibatis的简单实现与配置的攻略。 1. 简单实现 ibatis的简单实现需要添加ibatis-core,jdom和ibat…

    Java 2023年5月20日
    00
  • Java正则表达式基础入门知识

    来跟你聊一聊Java正则表达式基础入门知识的攻略吧! 什么是正则表达式 正则表达式(Regex,Regular Expression),是用来描述一组字符串匹配模式的规则。 Java支持正则表达式的API是java.util.regex包。正则表达式由字符和运算符构成,用于搜索、替换和提取字符串。 常用正则表达式符号 在开始介绍正则表达式的基础知识之前,让我…

    Java 2023年5月23日
    00
  • SpringBoot整合WxJava开启消息推送的实现

    下面我将为您详细讲解“SpringBoot整合WxJava开启消息推送的实现”的完整攻略。 简介 WxJava 是微信开发 Java SDK的全称,是以易用性和高性能为设计目标的微信 Java开发工具包,支持公众号、小程序、企业微信和开放平台等微信平台的开发。本文将基于 SpringBoot 框架和 WxJava SDK,实现微信消息推送的功能。推送包括文本…

    Java 2023年5月23日
    00
  • 浅析Java自定义注解的用法

    接下来我会详细讲解“浅析Java自定义注解的用法”的完整攻略。 什么是Java自定义注解 Java自定义注解相对于内置的注解,可以根据开发人员的需要添加自己想要的注解。Java自定义注解其实是一种元注解,它可以用来标记代码或方法的各种属性。 Java的注解是在Java SE5中新增的特性,它可以用来填写源代码的元数据,在编译、加载、运行时被其他程序利用。 如…

    Java 2023年5月26日
    00
  • 如何将SpringBoot项目打成 war 包并部署到Tomcat

    下面是将SpringBoot项目打成war包并部署到Tomcat的详细攻略。 1. 添加依赖 首先,我们需要在SpringBoot项目中添加Tomcat的依赖,以及修改pom.xml文件中的打包方式为war。 <!– 添加Tomcat的依赖 –> <dependency> <groupId>org.springfram…

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