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

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日

相关文章

  • 浅析使用JDBC操作MySQL需要添加Class.forName(“com.mysql.jdbc.Driver”)

    JDBC是Java数据库连接的简称,它是Java中操作数据库的一种标准,可以通过它连接MySQL、Oracle、SQL Server等多种数据库。其中,使用JDBC操作MySQL时,必须要添加Class.forName(“com.mysql.jdbc.Driver”)语句。 添加Class.forName(“com.mysql.jdbc.Driver”)的原…

    Java 2023年6月16日
    00
  • Java连接mysql数据库的详细教程(推荐)

    Java连接mysql数据库的详细教程 1. 准备工作 在开始连接数据库前,需要先准备好以下材料:1. 安装并启动mysql数据库;2. 下载并安装JDBC驱动。 2. 导入JDBC驱动 在编写Java代码之前,需要先导入JDBC驱动。可以从官方网站下载mysql JDBC驱动包,在项目中添加该jar包。 <dependency> <gro…

    Java 2023年5月19日
    00
  • JAVA/JSP学习系列之二

    以下是”JAVA/JSP学习系列之二”的完整攻略: 学习目标 了解JSP的基本语法和工作原理 掌握使用JSP开发动态Web应用的方法 学会JSP与Servlet之间的交互 JSP概述 JSP(Java Server Pages)是一种用于在服务器端生成动态网页内容的技术。它基于Java语言和Servlet技术,可嵌入HTML页面中。在JSP中,我们可以使用J…

    Java 2023年5月19日
    00
  • JavaWeb乱码问题的终极解决方案(推荐)

    JavaWeb乱码问题的终极解决方案 问题描述 在JavaWeb开发过程中,经常会遇到乱码问题。例如,使用post方式提交中文数据时,后台接收到的数据却是乱码。 这个问题的根本原因是因为编解码不一致,导致前端提交的数据在后端被解析时出现了乱码。 解决方案 解决这个问题的终极解决方案,是将全站都使用UTF-8编解码。这包括了Java代码和Web页面都需要使用U…

    Java 2023年5月20日
    00
  • Java有哪些操作字符串的类?区别在哪?

    Java中有多个类可以用于操作字符串,以下是比较常用的几个类: String 类: String 是一个 final 类,字符串是一个对象,一旦被创建,就不能被修改。因为Java中的String对象是可以共享的,所以每次对String进行修改时,都会创建一个新的String对象,影响了性能。 示例1:使用加号操作字符串,每次操作都会创建一个新的 String…

    Java 2023年5月27日
    00
  • Spring Boot全局统一异常处理器

    Spring Boot全局统一异常处理器 在Spring Boot应用中,处理异常是一个非常重要的问题,因为不处理异常会导致程序出现问题。为了避免应用程序因异常而出现问题,我们需要使用一个全局统一异常处理器。 配置 在 Spring Boot 应用中,需要定义一个 @ControllerAdvice 注解的异常处理类,如下所示: @ControllerAdv…

    Java 2023年5月27日
    00
  • 解决Jquery下拉框数据动态获取的问题

    当使用 jQuery 实现下拉框时,我们可能需要动态获取数据来填充下拉框选项。如果不处理好动态获取数据的方法,就会导致下拉框无法成功渲染出数据,或渲染出错误的数据。 以下是解决 Jquery 下拉框数据动态获取的问题的完整攻略,包含两个示例: 1. ajax方式获取数据 一种比较常见的方式是使用 ajax 请求来获取数据。我们可以使用 jQuery 的 $.…

    Java 2023年5月20日
    00
  • Java正则表达式之split()方法实例详解

    Java正则表达式之split()方法实例详解 简介 Java中的正则表达式是一种常见的字符串处理方式,可以使用它们来匹配、查找、替换或拆分字符串。其中,split()方法是一个非常常用的字符串拆分方法。本文将详细介绍split()方法及其应用。 split()方法参数 split()方法是String类的一个成员方法,用于将字符串根据传入的正则表达式拆分成…

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