oldwu's Blog - mybatis-plus
type: channel
link: https://blog.oldwu.top/index.php/tag/mybatis-plus/
items: Springboot+mybatis-plus+ACTable实现自动创建表结构

Springboot+mybatis-plus+ACTable实现自动创建表结构
type: item
date: 2021-12-04T20:35:47+08:00
description: Springboot+mybatis-plus+ACTable实现自动创建表结构本文主要介绍mybatis如何实现想hibernate一样自动创建表，以及记录下自己踩过的坑，发表于2021年12月，部分内容仅供参考，很有可能项目作者已经修复了那些问题。Springboot+Mybatis-plus没什么好说的，重头戏在ACTable，他是一个开源依赖，仓库地址：https://gitee.com/sunchenbin/mybatis-enhance，当然也有github的，就是利用他来实现自动创建表结构ACTable的官方文档：https://www.yuque.com/sunchenbin/actable/nfz097使用方法导入依赖最新依赖请查看maven仓库：https://mvnrepository.com/artifact/com.gitee.sunchenbin.mybatis.actable/mybatis-enhance-actable依赖基于Springboot，请先导入springboot依赖，下面的写法是按照官方文档整合Springboot来写的，注意 ：只适用于Springboot+mybatis-plus，如果使用mybatis或者springmvc的话，请查看官方文档来配置。 com.baomidou mybatis-plus-boot-starter 3.4.1 com.gitee.sunchenbin.mybatis.actable mybatis-enhance-actable 1.5.0.RELEASE com.baomidou mybatis-plus-annotation 配置文件actable: table: #可选：update/none/create/add auto: update model: #使用逗号隔开 pack: com.oldwu.entity,com.oldwu.genshin.entity,com.security.domain database: type: mysql index: #自己定义的索引前缀#该配置项不设置默认使用actable_idx_ prefix: INDEX_ unique: #自己定义的唯一约束前缀#该配置项不设置默认使用actable_uni_ prefix: INDEX_UNIQUE_注释都在上边了，应该一看就懂，这是官方对配置的解释：以及，加上mybatis-plus的配置，下面这个路径是写死的，不要改：mybatis-plus: mapper-locations: classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml启动类注解@MapperScan({"com.gitee.sunchenbin.mybatis.actable.dao.*"}) @ComponentScan(basePackages = {"com.gitee.sunchenbin.mybatis.actable.manager.*"})此处是官方给出的配置，这边有一个坑，下面会讲到启动项目测试至此，配置都完成了，你需要启动项目来测试一下是否有报错自动创建表这个依赖利用注解的形式来完成自动创建表，类似于hibernate，非常方便，官方的注解说明在这里，我也不一一列出：https://www.yuque.com/sunchenbin/actable/ca4vsf，这边只写几个重要的东西@Table("表名") public class SystemLog implements Serializable { //主键 @IsKey //自动递增 @IsAutoIncrement //后续不会更新这个字段，正常的使用方法请看官方文档，后面也会讲到一个坑 @IgnoreUpdate private Long id; //type为字段类型，name为字段名,length为字段长度， //default为默认值,更多见官方文档 //常用的应该就这几个，如果都不需要，括号里不填就行了 @Column(type = MySqlTypeConstant.TEXT) //不为空 @IsNotNull //建立唯一约束 @Unique private String receiveText; //创建日期类型的示例，并且默认值为当前时间 @Column(type = MySqlTypeConstant.DATETIME,defaultValue = "CURRENT_TIMESTAMP") private Date date; }然后启动项目测试，第一次创建表时会有中文日志输出，如果创建失败的话，项目会启动失败并…