通过Entity 创建数据库中的表,目前只支持mysql,A.CTable使用mybatis/mybatis-plus自动创建表

文章目录

      • [1. 添加依赖](#1. 添加依赖)
      • [2. 配置数据源和 MyBatis-Plus](#2. 配置数据源和 MyBatis-Plus)
      • [3. 编写实体类 `A.CTable`](#3. 编写实体类 A.CTable)
      • [4. 创建 Mapper 接口](#4. 创建 Mapper 接口)
      • [5. 启动类添加扫描注解](#5. 启动类添加扫描注解)
      • 总结
      • 常见错误
      • 参考文档

1. 添加依赖

首先,确保您的项目中已经引入了 mybatis-plus-boot-starter。如果使用 MySQL,请同时引入 MySQL 驱动。

Maven (pom.xml):

xml 复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <!-- MyBatis-Plus 启动器 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.3.2</version> <!-- 请使用最新稳定版本 -->
    </dependency>

    <!-- MySQL 连接器 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- 其他必要的依赖,如 spring-boot-starter-web -->
</dependencies>

2. 配置数据源和 MyBatis-Plus

application.ymlapplication.properties 文件中,配置数据库连接信息和 MyBatis-Plus 的自动建表策略。

application.yml:

yaml 复制代码
spring:
  datasource:
    # 根据您实际使用的数据库填写
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
    username: your_username
    password: your_password

mybatis-plus:
  configuration:
    # 开启下划线到驼峰的映射
    map-underscore-to-camel-case: true
  global-config:
    db-config:
      # 指定全局的主键策略,AUTO 为数据库自增
      id-type: auto
      # 配置 DDL 创建策略
      # - create-drop: 启动时创建表,关闭时删除表 (会清空数据)
      # - create: 启动时创建表,关闭时不删除 (会清空数据)
      # - update: 启动时更新表结构,如果表不存在则创建 (推荐用于开发和生产环境)
      # - validate: 启动时验证表结构是否一致,不一致则报错 (推荐用于生产环境)
      ddl-auto: update # 推荐使用 update,它最安全且实用

3. 编写实体类 A.CTable

创建一个静态内部类 A.CTable,并使用 MyBatis-Plus 提供的注解来描述表结构。

java 复制代码
package com.example.yourpackage; // 请替换为你的包名

import com.baomidou.mybatisplus.annotation.*;

// 使用 @TableName 注解指定映射的数据库表名
@TableName("c_table")
public class A {

    // 使用 @TableId 注解指定主键,并设置策略为自增
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    // 使用 @TableField 注解映射普通字段
    @TableField("name")
    private String name;

    @TableField("description")
    private String description;

    // 为了方便使用,通常提供 getter 和 setter 方法
    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    // toString, equals, hashCode 等方法也可以加上...
}

4. 创建 Mapper 接口

为了让 MyBatis-Plus 能够管理这个实体,你需要创建一个继承自 BaseMapper<T> 的 Mapper 接口。

java 复制代码
package com.example.yourpackage.mapper; // 请替换为你的 Mapper 包名

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.yourpackage.A; // 导入你的实体类

// 继承 BaseMapper<A>,获得对 A.CTable 的基本 CRUD 操作
public interface CTableMapper extends BaseMapper<A> {

}

5. 启动类添加扫描注解

最后,在你的 Spring Boot 启动类上,使用 @MapperScan 注解来扫描 Mapper 接口所在的包。

java 复制代码
package com.example.yourpackage;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
// 扫描 Mapper 接口所在的包,例如 "com.example.yourpackage.mapper"
@MapperScan("com.example.yourpackage.mapper") 
public class YourApplication { // 替换为你的启动类名称

    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }

}

总结

完成以上配置后,当您启动 Spring Boot 应用程序时,MyBatis-Plus 会根据 A.CTable 实体类的定义,在数据库中自动创建名为 c_table 的表(如果该表尚不存在),或者根据 ddl-auto 的配置更新表结构。

  • ddl-auto: update: 是最常用的选择,它会保留现有数据,仅同步实体类中定义的字段变化。
  • 实体类注解 : @TableName, @TableId, @TableField 是控制表结构映射的关键。

常见错误

  • 没有给Data 设置数据库中对应的类型

    解决方式:

  • 字段太多,没有设置长度,数据库一个记录最大的空间为65535

参考文档

相关推荐
无敌的牛12 小时前
redis学习过程
数据库·redis·学习
IT北辰12 小时前
神通数据库管理系统V7.0.251210 for Windows(x86 64bit)安装部署
数据库·神通
北顾笙98012 小时前
MySQL-day2
数据库·mysql
Demons_kirit12 小时前
新项目如何连接上自己本地的数据库
数据库
洪晓露13 小时前
将 rke2 集群证书延长至 10 年
运维·服务器·数据库
程序猿乐锅14 小时前
【MySQL | 第八篇】MySQL 视图
数据库·mysql
jieyucx14 小时前
SQL 查询终极高阶通鉴:从零基础拆解到工业级多表联查、窗口函数与索引优化
数据库·sql
ai_coder_ai15 小时前
论 NoSQL 数据库技术及其应用
数据库·nosql
AOwhisky17 小时前
Redis 学习笔记(第一期):概述、安装配置与核心理论
运维·数据库·redis·笔记·学习·云计算
ytttr87317 小时前
C# 定时数据库备份工具
开发语言·数据库·c#