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

参考文档

相关推荐
YOU OU7 小时前
Redis基础常识与命令
数据库·redis·缓存
Database_Cool_9 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
爱写代码的阿森10 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_10 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白11 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
窝子面11 小时前
手搓最简前后端协作-node
javascript·数据库
吳所畏惧11 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈11 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HPFBoy12 小时前
log4net 数据库存日志正确配置
数据库