首页 > 数据库 >MyBatis实现MySQL表字段及结构的自动增删

MyBatis实现MySQL表字段及结构的自动增删

时间:2024-06-03 14:21:55浏览次数:23  
标签:name true private mybatis 增删 MySQL MyBatis actable com

前言

在开发过程中,总会涉及到数据库表结构字段的增加或者删除,或者是索引的增加和减少,这个时候能把修改表结构字段这些工作都交给程序来进行,那能大大方便开发。正好有一个现成的工具可以在springboot里面实现这个流程。

介绍

mybatis-enhance-actable

上述是gitee链接。这个工具是mybatis-enhance-actable,引用作者的介绍:A.CTable是一个基于Spring和Mybatis的Maven项目,mybatis-enhance-actable支持springboot,增强了Mybatis的功能,通过配置model注解的方式来创建表,修改表结构,提供通用的单表CUDR工具,实现了mybatis自动建表的能力,目前支持Mysql。

使用

pom导包

    <dependency>
        <groupId>com.gitee.sunchenbin.mybatis.actable</groupId>
        <artifactId>mybatis-enhance-actable</artifactId>
        <version>1.5.0.RELEASE</version>
    </dependency>

配置application.yml

#自动建表设置
mybatis:
  table:
    #create系统启动后,会将所有的表删除掉,然后根据model中配置的结构重新建表,该操作会破坏原有数据;
    #update系统会自动判断哪些表是新建的.哪些字段要修改类型等,哪些字段要删除,哪些字段要新增,该操作不会破坏原有数据;
    #add新增表/新增字段/新增索引新增唯一约束的功能,不做做修改和删除(只在版本1.0.9.RELEASE及以上支持);
    #none系统不做任何处理;
    auto: update
  model:
    #扫描用于创建表的对象的包名 填入domain包路径
    pack: com.xx.xx.domain
  database:
    #数据库类型目前只支持mysql
    type: mysql

mybatis-plus: #数据库格式配置
  global-config:
    banner: false # 数据库启动的banner
    db-config:
      id-type: auto #id生成规则:mysql数据库id自增
  configuration:
    map-underscore-to-camel-case: true  #开启驼峰,处理数据库“_"的字段
    auto-mapping-behavior: full #自动映射任何复杂的结果
#  注意下面,一定要添加前面actable的xml
  mapper-locations: com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml,classpath*:mapper/*.xml

SpringBootApplication启动类配置

@SpringBootApplication
@EnableScheduling
@EnableCaching
@MapperScan({"com.gitee.sunchenbin.mybatis.actable.dao.*", "com.*.*.mapper"})
@ComponentScan({"com.gitee.sunchenbin.mybatis.actable.manager.*", "com.*.*.*"})
public class ReceiveCardTestSystemApplication {

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

}

关键是这两行

@MapperScan({"com.gitee.sunchenbin.mybatis.actable.dao.*", "com.*.*.mapper"})
@ComponentScan({"com.gitee.sunchenbin.mybatis.actable.manager.*", "com.*.*.*"}) //扫描所有的包 最后一个是*,中间两个*换成实际路径

要增加上actable的扫包路径。

Domain类的配置

@Getter
@Setter
@Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("users")
@Table(name = "users", isSimple = true)
public class UsersDO implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    @IsKey
    @IsAutoIncrement
    @Column(comment = "id")
    private Integer id;

    @Column(name = "user_name", length = 50, comment = "用户名", isNull = true)
    @Index
    private String userName;

    @Column(name = "password", length = 255, comment = "密码", isNull = true)
    private String password;

    @Column(name = "employee_id", length = 50, comment = "工号", isNull = true)
    @Unique
    private String employeeId;

    @Column(name = "role", comment = "0->管理员,1->测试员", isNull = true)
    private Integer role;

    @Column(name = "create_time", type = MySqlTypeConstant.DATETIME, isNull = true, comment = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @Column(name = "update_time", type = MySqlTypeConstant.DATETIME, isNull = true, comment = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

}

注意:

@Table(name = "users", isSimple = true)

当开启isSimple后 @Column里面不写name则会默认将驼峰命名改为下划线,比如updateTime变成了update_time

普通索引使用@Index,唯一索引使用@Unique

组合索引则这样使用:@Index(columns = {"country", "province", "city"})

通过上述配置,启动系统的时候就会自动对MySQL表进行更新了。

标签:name,true,private,mybatis,增删,MySQL,MyBatis,actable,com
From: https://www.cnblogs.com/Johnyzh/p/18228817

相关文章

  • MySQL DBA项目实战系列培训课程【MySQL 8.4最新版】
    为满足想快速掌握MySQL数据库安装配置与集群的学员,风哥特别设计的一套比较全面的MySQL安装配置与集群项目的数据库课程,本系列共6套课程,内容如下:1)Win2022+MySQL5.7/8.0/8.4安装配置2)Linux平台MySQL8.0数据库安装配置与版本升级3)Linux平台MySQL8.4数据库安装配置与版本升级4)Linu......
  • 一文带你理解透MyBatis源码
    本文分享自华为云社区《一文彻底吃透MyBatis源码!!》,作者:冰河。写在前面随着互联网的发展,越来越多的公司摒弃了Hibernate,而选择拥抱了MyBatis。而且,很多大厂在面试的时候喜欢问MyBatis底层的原理和源码实现。总之,MyBatis几乎成为了Java开发人员必须深入掌握的框架技术,今天,我们就......
  • 水质在线监测与数据分析 毕业设计 Spring+SpringMvc+Mybatis+Mysql
    作者主页:毕业设计精选作者简介:9年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家摘. 要   以巢湖水质为研究对象,设计和开发了基于SSM 的轻量级水质在线监测系统 ,对巢湖水中的总磷 、 氨氮等9种成分数据进行采集、传输......
  • 执行 delete from t1 where id = 10;MySQL会加什么锁?
    思考一个问题:下面一条简单的SQL,它加什么锁?deletefromt1whereid=10;带着你的答案,我们继续往下看。如果要分析上述SQL的加锁情况,必须了解这个SQL的执行前提,MySQL的隔离级别是什么?id列是不是主键?id列有没有索引?前提不同加锁处理的方式也不同。可能的情况:id列是不是主键?My......
  • MySQL大表优化方案
    当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很......
  • MySQL 使用方法以及教程
    一、引言MySQL是一个流行的开源关系型数据库管理系统(RDBMS),广泛应用于Web开发、数据分析等领域。它提供了高效、稳定的数据存储和查询功能。同时,Python作为一种强大的编程语言,也提供了多种与MySQL交互的库,其中pymysql就是其中之一。本文将介绍MySQL数据库的基础使用,并通过Pytho......
  • MYSQL 移机重装步骤(windows11)
     MYSQL移机重装步骤(windows11) 目的:已有电脑A,D盘安装有mysql(安装方式为免安装),准备在另一台电脑B上,复制安装电脑A上的mysql(8.0.23版本)。要求:电脑A的 mysql数据库表都恢复,且设置的用户和密码等都恢复。 步骤: 1 先从电脑A复制mysql文件夹到电脑B的D盘,如:D:\mysql......
  • MySQL进阶之索引
    1索引概述  索引(index)是帮助MySOL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。  索引的优缺点优势劣势......
  • 在Macos上,使用homebrew下载并配置mysql
    下载mysqlbrewinstallmysql启动mysql注意:由于启动mysql的指令会先将在Github上的官方维护的tap克隆到homebrew-services文件夹中,因此需要先确定能够稳定地访问Github如果很不幸你无法稳定的访问Github,我们可以更改homebrew主仓库的git远程地址和homebrew核心软件仓库的git......
  • MySQL注入之Fuzz测试&WAF Bypass小结
    目录BurpSuiteFuzz测试内联注释绕过union[]select联合查询绕过敏感函数绕过from[]information_schema查表报错注入示例常规绕过思路总结空格绕过引号绕过逗号绕过比较符号绕过逻辑符号绕过关键字绕过编码绕过等价函数绕过宽字节注入多参数请求拆分生僻函数输出内容过滤BurpSuite......