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日

相关文章

  • mybatis简介与配置_动力节点Java学院整理

    下面我将介绍关于MyBatis的简介与配置,并附上两个示例供参考。 Mybatis简介 MyBatis是一个开源的Java持久化框架,它通过XML或注解实现了对SQL的映射,将程序中的Java对象自动映射到数据库中的对应表格。MyBatis可以很好地解决Java程序中数据的存取问题,同时它也提供了很好的扩展性。 MyBatis最初是iBATIS项目,2006…

    Java 2023年5月20日
    00
  • Jmeter BeanShell 内置变量vars、props、prev的使用详解

    下面是“Jmeter BeanShell 内置变量vars、props、prev的使用详解”的完整攻略。 1. 什么是BeanShell内置变量 在Jmeter中,BeanShell是一种脚本语言。当我们需要在Jmeter中编写脚本时,可以使用BeanShell语言。Jmeter中已经内置了许多BeanShell变量,这些变量中包含了大量的信息,可以帮助我们…

    Java 2023年6月15日
    00
  • [推荐]Win2003 服务器的详细架设

    [推荐]Win2003 服务器的详细架设 介绍 本攻略将讲解如何在Win2003上架设服务器,并安装IIS和SQL Server,适用于需要搭建Web应用或开发环境的用户。 系统要求 Windows Server 2003操作系统 硬件配置:最低Pentium III 550MHz、256MB RAM、3GB硬盘空间,推荐Pentium 4或以上、512MB…

    Java 2023年6月15日
    00
  • 入门java的第一步HelloWorld

    下面是“入门Java的第一步HelloWorld”的完整攻略: 步骤一:安装Java开发工具 在进行Java编程前,需要安装Java开发工具,例如Eclipse、NetBeans等。本文以Eclipse为例进行讲解。 Eclipse下载地址:https://www.eclipse.org/downloads/ 下载后双击exe文件进行安装,安装完成后启动Ec…

    Java 2023年5月19日
    00
  • JAVA异常体系结构详解

    JAVA异常体系结构详解 异常概述 在Java基础编程语言中,异常(Exception)是指在一个程序的运行过程中发生的错误或者问题。异常表示程序在运行时遇到了某个非正常的情况,这个特殊情况将终止当前正在执行的代码块并且会向调用者传递一个错误信息,在异常处理的过程中是使用异常对象来表示的。相关类都保存在 java.lang.Exception 包中。 Jav…

    Java 2023年5月27日
    00
  • Spark学习笔记之Spark SQL的具体使用

    Spark学习笔记之Spark SQL的具体使用 简介 Spark SQL是Spark提供的分布式SQL查询引擎,通过Spark SQL,我们可以使用SQL语法来查询非关系型数据、结构化数据、CSV文件等。Spark SQL目前支持Hive查询语法和Spark SQL语法,也允许用户进行自定义函数、聚合函数等操作。 安装 要使用Spark SQL,我们需要先…

    Java 2023年5月26日
    00
  • JAVA序列化和反序列化的底层实现原理解析

    JAVA序列化和反序列化的底层实现原理解析 序列化与反序列化的概念 序列化 序列化是指将对象转换成可传输的格式(例如字节码),并且可以在将来重新创建出与原对象完全相同的副本。序列化操作可以在网络上传输对象,或者将对象存储到本地磁盘上。 反序列化 反序列化是指将序列化后的数据流还原为原来的对象的操作。也就是说,反序列化能够重新创建出一个和已序列化的对象完全相同…

    Java 2023年5月19日
    00
  • 简单了解JAVA NIO

    Java NIO 简介 Java NIO即Java非阻塞式IO (Java Non-blocking I/O)。Java NIO提供了一种新的 IO工作方式和API。它比原生的Java IO(Java IO通过流的方式读取数据,而NIO则是通过通道(channel)和缓冲区(buffer)来读取数据)更加高效,也更易于扩展。虽然Java NIO比Java I…

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