通过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

参考文档

相关推荐
一拳一个娘娘腔6 小时前
【SRC漏洞挖掘系列】第03期:SQL注入——从“拖库”到“掌舵”的终极奥义
数据库·sql·安全
半夜修仙7 小时前
Redis中String数据类型的常见命令
数据库·redis·缓存
南境十里·墨染春水7 小时前
讲讲libevent底层机制
数据库
念恒123067 小时前
MySQL表的约束(上)
数据库·mysql
海市公约7 小时前
MySQL核心概念及SQL语句与数据类型详解
mysql·sql语句·数据类型·运算符·ddl·dml·数据库入门
x***r1517 小时前
heidisql数据库客户端使用步骤详解(附HeidiSQL连接MySQL与SQL执行教程)
数据库·sql·mysql
段一凡-华北理工大学8 小时前
2026 高炉炼铁智能化技术全景与演进路径~系列文章04:云-边-端协同架构:高炉智能化底层支撑体系
数据库·人工智能·深度学习·神经网络·安全·架构·高炉炼铁智能化
青山师8 小时前
B+树与InnoDB索引深度解析:数据库索引的底层原理与工程实践
数据结构·数据库·b树·性能优化·b+树·索引优化·mysql性能
小学鸡!8 小时前
IoTDB数据库导入导出数据
数据库·iotdb