mybatis自动建表的实现方法

MyBatis是一个流行的ORM框架,可以让开发人员通过简单的配置实现Java对象与关系型数据库之间的映射。它支持自动建表,在配置文件中添加一些参数,就可以让MyBatis自动创建数据库表结构。下面是实现自动建表的步骤:

1. 添加自动建表所需的依赖

在pom.xml文件中添加如下依赖:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

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

其中,mybatis是MyBatis框架本身的依赖,mybatis-generator-core是自动生成代码所需的依赖。

2. 配置自动建表参数

在MyBatis的配置文件中添加如下配置:

<generatorConfiguration>
    <context id="default" targetRuntime="MyBatis3">
        <!-- 数据库链接URL、用户名和密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/test"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <!-- 指定生成实体类的位置 -->
        <javaModelGenerator targetPackage="cn.nfy.test.model"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- 指定生成Mapper.xml的位置 -->
        <sqlMapGenerator targetPackage="cn.nfy.test.sql"
                         targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- 指定生成Mapper接口的位置 -->
        <javaClientGenerator targetPackage="cn.nfy.test.dao"
                             type="XMLMAPPER"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- 指定要自动生成表的名称 -->
        <table tableName="user">
            <generatedKey column="id" sqlStatement="mysql" identity="true" />
        </table>
    </context>
</generatorConfiguration>

其中,包含了以下配置:

  • datasource参数:JDBC链接信息,包括driverClass(JDBC驱动类)、connectionURL(数据库链接地址)、userId(数据库用户名)和password(数据库密码)。
  • javaModelGenerator参数:自动生成实体类的位置,包括targetPackage(包名)和targetProject(工程路径)。
  • sqlMapGenerator参数:自动生成Mapper.xml文件的位置,包括targetPackage(包名)和targetProject(工程路径)。
  • javaClientGenerator参数:自动生成Mapper接口的位置,包括targetPackage(包名)和targetProject(工程路径)。
  • table参数:要自动建表的表名,同时指定主键信息。

此时,我们可以使用MyBatis Generator自动生成实体类、Mapper接口和Mapper.xml文件。

3. 自动生成表结构

在IntelliJ IDEA中打开终端,执行如下命令:

java -jar mybatis-generator-core-1.4.0.jar -configfile generatorConfig.xml -overwrite

其中,mybatis-generator-core-1.4.0.jar是MyBatis Generator的jar包,generatorConfig.xml是上一步中定义的配置文件的路径,-overwrite表示如果已经存在文件,覆盖原文件。

执行命令后,MyBatis Generator会连接数据库并生成相关文件。

示例1:使用MyBatis Generator自动生成表结构

下面,我们以MySQL数据库为例,演示如何使用MyBatis Generator自动生成表结构。

首先,在MySQL中创建名为test的数据库:

CREATE DATABASE test;

然后,在test数据库中创建名为user的表:

USE test;

CREATE TABLE user (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    age INT UNSIGNED NOT NULL DEFAULT 0,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

接着,在IntelliJ IDEA中创建Maven项目,添加上述依赖,并在resource目录下创建mybatis-config.xml和generatorConfig.xml文件,将上述代码粘贴到对应的文件中。

在IntelliJ IDEA的终端中执行如下命令:

java -jar mybatis-generator-core-1.4.0.jar -configfile generatorConfig.xml -overwrite

MyBatis Generator会连接MySQL数据库,并自动生成实体类、Mapper接口和Mapper.xml文件。

最后,在IDEA中右键单击项目,选择"Maven"->"Reload Project",重新加载项目,就可以在src/main/java和src/main/resources目录下,看到自动生成的文件。

示例2:使用MyBatis Plus自动生成表结构

除了使用MyBatis Generator自动生成表结构外,我们还可以使用第三方工具MyBatis Plus来实现自动建表的功能。MyBatis Plus是基于MyBatis的增强工具,能够减少代码量、提高代码可读性,同时支持自动建表、分页查询等功能。

下面,我们以Spring Boot项目为例,演示如何使用MyBatis Plus实现自动建表:

首先,在pom.xml文件中添加如下依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3.1</version>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>

其中,mybatis-plus-boot-starter是MyBatis Plus的Spring Boot集成依赖,druid-spring-boot-starter是阿里开源的数据库连接池依赖。

然后,在application.properties或application.yml文件中添加如下MySQL数据库的配置信息:

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20

spring.datasource.filters=stat,wall
spring.datasource.validationQuery=SELECT 1
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

mybatis-plus.global-config.db-config.id-type=auto
mybatis-plus.global-config.db-config.insert-strategy=NOT_NULL
mybatis-plus.global-config.db-config.update-strategy=NOT_NULL

其中,包含了如下配置:

  • spring.datasource参数:MySQL数据库的链接信息。
  • mybatis-plus.global-config参数:MyBatis Plus的自动建表配置,其中id-type=auto表示主键自增。
  • mybatis-plus.global-config.db-config参数:MyBatis Plus的自动建表配置,其中insert-strategy和update-strategy表示插入和更新策略为非空列。

最后,在Java类中定义实体类和Mapper接口:

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "user")
public class User implements Serializable {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
}

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

其中,@TableName注解表示数据表名为user,@TableId注解表示id为主键且自增。

此时,MyBatis Plus会根据实体类生成对应的表结构,同时也会自动生成Mapper接口和Mapper.xml文件。可以在MySQL Workbench中查看生成的表结构。

至此,我们已经完成了使用MyBatis Plus自动建表的全部操作。

参考资料:

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis自动建表的实现方法 - Python技术站

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

相关文章

  • SpringBoot各种注解详解

    下面我将为您讲解“SpringBoot各种注解详解”的完整攻略,包含以下内容: Spring Boot的注解概述 常用注解解释与使用示例 自定义注解解释与使用示例 Spring Boot的注解概述 在Spring Boot中,有几百个注解可供使用。不过,我们只需要了解并掌握其中的一小部分。Spring Boot中的注解可以分为以下几类: 核心注解:用于Spr…

    Java 2023年5月15日
    00
  • SpringBoot在生产快速禁用Swagger2的方法步骤

    下面我将介绍使用SpringBoot在生产环境中快速禁用Swagger2的方法。 步骤一:pom.xml中排除Swagger2依赖 在pom.xml文件中,可以使用如下代码排除Swagger2依赖: <dependency> <groupId>io.springfox</groupId> <artifactId&gt…

    Java 2023年5月20日
    00
  • java struts常见错误以及原因分析

    Java Struts常见错误以及原因分析 Java Struts是一种MVC架构的Web应用程序框架。在使用Java Struts开发Web应用程序时,可能会遇到各种各样的错误。在本篇文章中,我们将讨论一些常见的Java Struts错误以及可能的原因,并提供一些解决这些错误的方法和示例。 1. Struts中的空指针异常 在Java Struts应用程序…

    Java 2023年5月20日
    00
  • java实现简单超市管理系统

    Java实现简单超市管理系统攻略 本文将介绍如何使用Java语言实现一个简单的超市管理系统,包括设计思路、功能需求、创建Java项目、数据库设计、代码实现等方面。本超市管理系统将实现包括用户登录、商品管理、仓库管理、销售管理等基本功能,从而满足超市日常管理需求。 设计思路 总体思路是基于Java Web实现一个简单的超市管理系统。首先,需要确定所需的基本功能…

    Java 2023年5月18日
    00
  • java代码实现mysql分表操作(用户行为记录)

    下面是详细讲解“Java代码实现MySQL分表操作(用户行为记录)”的完整攻略: 一、需求背景 在实际应用中,用户行为记录是一项重要的工作。随着用户数量的不断增加,数据量也随之增加,如果所有的用户行为记录都存放在同一张表中,会严重影响数据库的性能。因此,我们需要对用户行为记录进行分表操作,以减轻数据库的压力。 二、分表方案 在分表方案中,我们可以按照时间、用…

    Java 2023年5月20日
    00
  • java数据库开发之JDBC基础使用方法及实例详解

    JDBC基础使用方法及实例详解 什么是JDBC? Java DataBase Connectivity,简称JDBC,是一种可以让Java程序与关系型数据库进行交互的API。通过JDBC提供的API,我们可以实现一系列的操作,如连接数据库、执行SQL语句、处理返回结果等。 JDBC连接数据库 在使用JDBC之前,首先需要建立与数据库的连接。JDBC连接数据库…

    Java 2023年5月19日
    00
  • docker常用命令

    一、Docker基本概念 1.镜像(Image) Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。 docker的镜像是由 镜像名+版本 组成的。如果没有指定镜像名没有指定版本,默认是…

    Java 2023年4月23日
    00
  • java中DateUtils时间工具类详解

    Java中DateUtils时间工具类详解 介绍 Java中的Date类是处理日期和时间的基本工具类,常用方法比较有限。而DateUtils时间工具类则提供了更丰富的时间处理方法,方便对日期和时间进行各种操作。 在Java中使用DateUtils需要导入Apache的commons-lang3jar包。commons-lang3提供了很多常用的工具类,除了日…

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