mybatis generator 使用方法教程(生成带注释的实体类)

yizhihongxing

MyBatis Generator使用方法教程

MyBatis Generator是一个可以将数据库表结构直接转换为Java实体类的工具,使用它可以省去手动编写Java实体类的过程,提高开发效率。本文将详细讲解MyBatis Generator的使用方法,并且会演示如何生成带注释的实体类。

准备工作

在开始使用MyBatis Generator之前,需要完成以下准备工作:

  1. 安装Java和Maven
  2. 创建一个Java项目
  3. 添加MyBatis和MyBatis Generator依赖

    <dependencies>
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.6</version>
    </dependency>
    <dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.4.0</version>
    </dependency>
    </dependencies>

配置文件

MyBatis Generator需要一个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>
    <classPathEntry location="./mysql-connector-java-8.0.23.jar" />

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!-- 数据库连接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis_demo"
                        userId="root"
                        password="123456">
        </jdbcConnection>

        <!-- 实体类生成的包名 -->
        <javaModelGenerator targetPackage="com.example.entity"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- Mapper类生成的包名 -->
        <sqlMapGenerator targetPackage="com.example.mapper"
                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- DAO生成的包名 -->
        <javaClientGenerator targetPackage="com.example.mapper"
                             targetProject="src/main/java"
                             type="XMLMAPPER">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- 表名和实体类的映射信息 -->
        <table schema="mybatis_demo" tableName="user">
            <generatedKey column="id" sqlStatement="JDBC"/>
        </table>

    </context>
</generatorConfiguration>

以上配置文件指定了以下内容:

  1. 数据库连接信息
  2. 实体类、Mapper类、DAO生成的包名
  3. 表名和实体类的映射信息

在此基础上,我们可以对实体类进行注释。

生成带注释的实体类

在配置文件中添加以下内容:

 <!-- 配置实体类的属性注释 -->
 <commentGenerator>
     <property name="suppressAllComments" value="false"/>
     <property name="addRemarkComments" value="true"/>
     <property name="dateFormat" value="yyyy-MM-dd"/>
 </commentGenerator>

suppressAllComments表示是否禁止所有注释,addRemarkComments表示是否对实体类的属性添加注释。其中,dateFormat表示注释中的日期格式。

完成配置文件后,启动Maven项目并执行以下命令就可以生成实体类了:

$ mvn mybatis-generator:generate

执行完毕后,在对应的包路径下就可以找到生成的带注释的实体类了。

示例

示例中假设MySQL数据库创建了以下表和数据:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `gender` varchar(4) DEFAULT NULL COMMENT '性别',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;

INSERT INTO `user` (`id`, `name`, `age`, `gender`)
VALUES
    (1, 'Alice', 20, '女'),
    (2, 'Bob', 23, '男');

配置文件

创建并编辑mybatis-generator-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>
    <classPathEntry location="./mysql-connector-java-8.0.23.jar" />

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!-- 数据库连接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/test"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <!-- 实体类生成的包名 -->
        <javaModelGenerator targetPackage="com.example.entity"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- Mapper类生成的包名 -->
        <sqlMapGenerator targetPackage="com.example.mapper"
                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- DAO生成的包名 -->
        <javaClientGenerator targetPackage="com.example.mapper"
                             targetProject="src/main/java"
                             type="XMLMAPPER">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- 表名和实体类的映射信息 -->
        <table schema="test" tableName="user">
            <generatedKey column="id" sqlStatement="JDBC"/>
        </table>

        <!-- 配置实体类的属性注释 -->
         <commentGenerator>
             <property name="suppressAllComments" value="false"/>
             <property name="addRemarkComments" value="true"/>
             <property name="dateFormat" value="yyyy-MM-dd"/>
         </commentGenerator>

    </context>
</generatorConfiguration>

其中,addRemarkComments的值指定为true,表示要为实体类的属性添加注释。

生成实体类

在Maven项目中执行以下命令即可生成带注释的实体类:

$ mvn mybatis-generator:generate

生成的实体类代码如下:

package com.example.entity;

import java.util.Date;

/**
 * Table: user
 */
public class User {
    /**
     * 主键
     * 
     * Column: id
     */
    private Integer id;

    /**
     * 姓名
     * 
     * Column: name
     */
    private String name;

    /**
     * 年龄
     * 
     * Column: age
     */
    private Integer age;

    /**
     * 性别
     * 
     * Column: gender
     */
    private String gender;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender == null ? null : gender.trim();
    }
}

生成Mapper类和DAO接口

在Maven项目中执行以下命令:

$ mvn mybatis-generator:generate

生成的Mapper类和DAO接口代码如下:

package com.example.mapper;

import com.example.entity.User;
import com.example.entity.UserExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {
    long countByExample(UserExample example);

    int deleteByExample(UserExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    List<User> selectByExample(UserExample example);

    User selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);

    int updateByExample(@Param("record") User record, @Param("example") UserExample example);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}
package com.example.mapper;

import com.example.entity.User;
import com.example.entity.UserExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {
    long countByExample(UserExample example);

    int deleteByExample(UserExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    List<User> selectByExample(UserExample example);

    User selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);

    int updateByExample(@Param("record") User record, @Param("example") UserExample example);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}

结语

本文详细讲解了MyBatis Generator的使用方法,并演示了如何生成带注释的实体类。希望对读者有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis generator 使用方法教程(生成带注释的实体类) - Python技术站

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

相关文章

  • Java10正式版发布:包含109 项新特性汇总(附下载)

    Java10正式版发布攻略 Java10于2018年3月20日正式发布,包含了109项新特性。本攻略将对Java10的新特性进行详细介绍,并提供Java10的下载方式。 1. 局部变量类型推断 Java10引入了var关键字用于局部变量类型推断。通过var关键字,编译器可以根据变量的初始值来推断其类型,从而减少了代码量和提高了可读性。以下为示例代码: var…

    Java 2023年5月19日
    00
  • Java Apache Commons报错“MathException”的原因与解决方法

    “MathException”是Java的Apache Commons类库中的一个异常,通常由以下原因之一引起: 无效的数学运算:如果数学运算无效,则可能会出现此错误。在这种情况下,需要检查数学运算以解决此问题。 数学运算溢出:如果数学运算结果超出了数据类型的范围,则可能会出现此错误。在这种情况下,需要使用更大的数据类型或其他方法来解决此问题。 以下是两个实…

    Java 2023年5月5日
    00
  • JavaWeb动态导出Excel可弹出下载

    引言: 在JavaWeb开发过程中,有时候需要将数据库中的数据导出为Excel文件,然后让用户可以进行下载。而且,下载的过程中需要提供一些提示信息,如下载进度、下载成功等信息。本文将详细介绍如何使用JavaWeb动态导出Excel并实现弹出下载的效果。 步骤: 1.创建Excel文件 我们可以使用Apache POI来创建Excel文件,这里就不过多介绍了,…

    Java 2023年6月15日
    00
  • Java垃圾回收之复制算法详解

    Java垃圾回收之复制算法详解 什么是复制算法? 复制算法是一种垃圾回收算法,也是最简单的垃圾回收算法之一。它的主要思想是将可用内存分为大小相等的两块,每次只使用其中一块,当这一块内存使用完时,就将还存活的对象复制到另外一块上,然后将这一块全部清空,然后继续使用这一块内存。 复制算法的过程 复制算法可以划分为三个步骤: 在堆内存的可用空间中分配对象,这是常规…

    Java 2023年5月19日
    00
  • JSP 动态树的实现

    JSP(Java Server Pages)是一种使用 Java 技术编写的服务器端网页开发语言。JSP 动态树可以实现网页上的动态菜单、目录等功能,增强了网页的交互性。在下面的攻略中,我将介绍如何使用 JSP 实现动态树。 1. 准备工作 首先,需要在项目中引入 JSTL(JSP Standard Tag Library)包。可以在 Maven 仓库中查找…

    Java 2023年6月15日
    00
  • Java中将base64编码字符串转换为图片的代码

    要将base64编码字符串转换为图片,可以按照以下步骤进行操作: 1. 解码base64编码字符串 首先需要将base64编码的字符串解码为字节数组。在Java中,可以通过使用Base64类的getDecoder()方法获取Base64.Decoder对象来解码base64编码的字符串,示例代码如下: import java.util.Base64; Str…

    Java 2023年5月20日
    00
  • Java异常之图书管理系统

    现在我来给大家分享一下“Java异常之图书管理系统”的完整攻略。 1. 异常概述 异常是Java中用于处理错误和异常情况的一种机制。当程序发生异常时,可以通过异常处理机制将异常抛出并捕获,从而避免程序崩溃或者出现错误。 在Java中,异常是Throwable类及其子类的对象,其中最常见的异常分类包括:Checked Exception(编译时异常)和Unch…

    Java 2023年5月26日
    00
  • asp.net实现的MVC跨数据库多表联合动态条件查询功能示例

    ASP.NET 实现的 MVC 跨数据库多表联合动态条件查询功能是一个常见的需求,可以通过以下的步骤来实现。 步骤一:建立数据库 首先需要在数据库中建立相应的表,以便进行多表联合查询。在本次示例中,我们将创建2个表,分别是 “users” 和 “orders” 表。其中 “users” 表中包含以下字段:id, name, email, password,”…

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