SpringBoot项目整合ACTable实现实体类快速生产数据库表

1.安装

ACTable依赖

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

使用mybatis-plus配合使用为了避免jar包版本冲突问题可以参照以下方式引入依赖

<dependency>
    <groupId>com.gitee.sunchenbin.mybatis.actable</groupId>
    <artifactId>mybatis-enhance-actable</artifactId>
    <version>1.5.0.RELEASE</version>
    <exclusions>
        <exclusion>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-annotation</artifactId>
        </exclusion>
    </exclusions>
</dependency>

异常表现为:项目启动过程中报OrderBy注解ClassNotFindException异常

2.SpringBoot配置方式

1.项目的application.properties配置文件(二选一)

1.配置actable的建表模式,建表依托的model所属的包路径,以及数据库的类型,根据自己的情况配置。

2.配置actable所使用的xml配置到mybatis的mapperlocations中,这一项的值是固定的:classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/l

代码示例如下:

# actable的配置信息
actable.table.auto=update
actable.model.pack=com.yours.model
actable.database.type=mysql
actable.index.prefix=自己定义的索引前缀#该配置项不设置默认使用actable_idx_
actable.unique.prefix=自己定义的唯一约束前缀#该配置项不设置默认使用actable_uni_
# mybatis自有的配置信息,key也可能是:mybatis.mapperLocations
mybatis.mapper-locations=classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml

PS:如果使用了mybatis-plus,需要把classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml配置到这里:mybatis-plus.mapper-locations

2.项目的application.yml配置文件(二选一)

# actable的配置信息
actable:table:#    none   系统不做任何处理。#    create 系统启动后,会先将所有的表删除掉,然后根据model中配置的结构重新建表,该操作会破坏原有数据。#    update 系统启动后,会自动判断哪些表是新建的,哪些字段要修改类型等,哪些字段要删除,哪些字段要新增,该操作不会破坏原有数据。#    add    系统启动后,只做新增,比如新增表/新增字段/新增索引/新增唯一约束的功能,而不会去做修改和删除的操作 (只在版本1.0.9.RELEASE及以上支持)。auto: nonemodel:pack: 扫描的包路径database:type: mysql  //支持的数据库,目前只支持mysqlindex:prefix: xxx_idx #自己定义的索引前缀#该配置项不设置默认使用actable_idx_unique:prefix: xxx_uni #自己定义的唯一约束前缀#该配置项不设置默认使用actable_uni_

配置解析:

springboot2.0+启动类需要做如下配置(必备)

1.@ComponentScan配置,路径"com.gitee.sunchenbin.mybatis.actable.manager.*"

2.@MapperScan配置,路径"com.gitee.sunchenbin.mybatis.actable.dao.*"

代码示例如下:

@SpringBootApplication
@EnableEurekaClient
@EnableHystrix
@EnableFeignClients
@MapperScan("com.gitee.sunchenbin.mybatis.actable.dao.*")
@ComponentScan(basePackages = {"com.gitee.sunchenbin.mybatis.actable.manager.*"})
public class OrderApiApplication {   
    public static void main(String[] args) {      
        SpringApplication.run(OrderApiApplication.class, args);   
    }
}

springboot3.0+启动类需要做如下配置(必备),自动执行建表失效需要springboot初始化之后,代码主动触发执行。

1.@ComponentScan配置,路径"com.gitee.sunchenbin.mybatis.actable.manager.*"

2.@MapperScan配置,路径"com.gitee.sunchenbin.mybatis.actable.dao.*"

代码示例如下:

@SpringBootApplication
@EnableEurekaClient
@EnableHystrix
@EnableFeignClients
@MapperScan("com.gitee.sunchenbin.mybatis.actable.dao.*")
@ComponentScan(basePackages = {"com.gitee.sunchenbin.mybatis.actable.manager.*"})
public class OrderApiApplication {   
    public static void main(String[] args) {      
        ConfigurableApplicationContext run = SpringApplication.run(OrderApiApplication.class, args);
        // 容器中获取actable的核心处理类
        StartUpHandler bean =run.getBean(StartUpHandler.class, args);
        // 手动执行actable的建表方法
        bean.startHandler();
    }
}

3.常用注解

1.@Table

描述:表名注解

属性

类型

是否必填

默认值

描述

name

String

""

不填默认根据驼峰转换法转换表名,例如ProductLabel,自动转为product_label

value

comment

String

""

表注释,也可以使用@TableComment注解代替

charset

MySqlCharsetConstant

MySqlCharsetConstant.DEFAULT

表字符集,也可以使用@TableCharset注解代替,默认值代表不填,以数据库自有的默认值为准

engine

MySqlEngineConstant

MySqlEngineConstant.DEFAULT

表存储引擎,也可以使用@TableEngine注解代替,默认值代表不填,以数据库自有默认值为准

isSimple

boolean

false

是否开启simple模式配置,默认不开启,开启后Field不写注解@Column也可以采用默认的驼峰转换法创建字段

excludeFields

String[]

"serialVersionUID"

需要排除的属性名,排除掉的属性不参与建表

2.@IgnoreTable

描述:忽略当前实体建表逻辑,设置在实体类上,如果设置了那么该实体不参与建表更新表

3.@TableComment

描述:表注释注解

属性

类型

是否必填

默认值

描述

value

String

表注释,同@Table.comment()属性

3.@Column

描述:字段注解

属性

类型

是否必填

默认值

描述

value

String

""

字段名

name

type

MySqlTypeConstant

MySqlTypeConstant.DEFAULT

字段类型,也可以使用@ColumnType替代,默认值标识不填,使用ACTable自动类型转换规则

length

int

255

字段的默认长度,默认255时,会去读取该类型实际的默认长度

decimalLength

int

0

小数点保留位数,默认为0时,会去读取该类型实际的小说点默认长度

isNull

boolean

true

是否为可以为null,true是可以,false是不可以,默认为true,也可以使用@IsNotNull来替代

isKey

boolean

false

是否是主键,默认false,也可以使用@IsKey来代替

isAutoIncrement

boolean

false

是否自动递增,默认false,也可以使用@IsAutoIncrement来替代

defaultValue

String

ColumnUtils.DEFAULTVALUE

默认值,默认为DEFAULT,表示不填,默认为null,可用@DefaultValue替代

只有String和Boolean采用字符串传参的方式使用的是'#{}',其他类型均使用原生方式拼接sql使用的是'${}'

时间戳字段类型必须用:MySqlTypeConstant.TIMESTAMP

创建时间时间戳可以用

defaultValue="CURRENT_TIMESTAMP"

更新时间时间戳可以用

defaultValue="NULL ON UPDATE CURRENT_TIMESTAMP"

comment

String

""

数据表字段备注,也可用@ColumnComment替代

4.@IgnoreUpdate

描述:标注当前字段参与创建不参与更新,解决使用@DefaultValue("NULL ON UPDATE CURRENT_TIMESTAMP")时当前字段每次重启项目都会进行更新操作的问题

属性

类型

是否必填

默认值

描述

value

String

是否忽略对当前字段的更新操作

MySqlTypeConstant

字段类型可选枚举值列表

描述

DEFAULT

默认值标识不填,使用ACTable自动类型转换规则

INT

int类型,默认长度11,没有小数点长度

VARCHAR

varchar类型,默认长度255,没有小数点长度

DECIMAL

decimal类型,默认长度10,小数点默认长度2

TEXT

text类型,不需要设置长度

........

太多不一一列举,自行查看代码,枚举中lengthCount表示需要几个长度(0:不需要设置长度,1:需要设置一个长度,2:需要设置小数点长度),lengthDefault表示默认长度,decimalLengthDefault表示小数点默认长度

ACTable自动类型转换规则

Java数据类型

对应Mysql数据类型

java.lang.String

MySqlTypeConstant.VARCHAR

java.lang.Long

MySqlTypeConstant.BIGINT

java.lang.Integer

MySqlTypeConstant.INT

java.lang.Boolean

MySqlTypeConstant.BIT

java.math.BigInteger

MySqlTypeConstant.BIGINT

java.lang.Float

MySqlTypeConstant.FLOAT

java.lang.Double

MySqlTypeConstant.DOUBLE

java.lang.Short

MySqlTypeConstant.SMALLINT

java.math.BigDecimal

MySqlTypeConstant.DECIMAL

java.sql.Date

MySqlTypeConstant.DATE

java.util.Date

MySqlTypeConstant.DATE

java.sql.Timestamp

MySqlTypeConstant.DATETIME

java.sql.Time

MySqlTypeConstant.TIME

long

MySqlTypeConstant.BIGINT

int

MySqlTypeConstant.INT

boolean

MySqlTypeConstant.BIT

float

MySqlTypeConstant.FLOAT

double

MySqlTypeConstant.DOUBLE

short

MySqlTypeConstant.SMALLINT

char

MySqlTypeConstant.VARCHAR

5.@ColumnComment

描述:字段备注注解

属性

类型

是否必填

默认值

描述

value

String

字段备注,同@Column.comment()属性

6.@DefaultValue

描述:字段默认值注解

属性

类型

是否必填

默认值

描述

value

String

字段默认值,同@Column.defaultValue()属性

创建时间时间戳可以用

@ColumnType(MySqlTypeConstant.TIMESTAMP)

@DefaultValue("CURRENT_TIMESTAMP")

更新时间时间戳可以用

@ColumnType(MySqlTypeConstant.TIMESTAMP)
@IgnoreUpdate @DefaultValue("NULL ON UPDATE CURRENT_TIMESTAMP")

7.@IsAutoIncrement

描述:字段自增的注解,同@Column.isAutoIncrement

8.@IsKey

描述:字段是主键的注解,同@Column.isKey

9.@IsNotNull

描述:字段不为空的注解,同@Column.isNull()=false

10.@ColumnType

描述:字段类型注解

属性

类型

是否必填

默认值

描述

value

MySqlTypeConstant

MySqlTypeConstant.DEFAULT

字段类型,也可以使用@Column.type替代,默认值标识不填,使用ACTable自动类型转换规则

length

int

255

字段的默认长度,默认255时,会去读取该类型实际的默认长度

decimalLength

int

0

小数点保留位数,默认为0时,会去读取该类型实际的小说点默认长度

11.@Index

描述:字段设置为索引的注解

属性

类型

是否必填

默认值

描述

value

String

""

索引的名字,不设置默认为{actable_idx_当前标记字段名@Column的name},如果设置了名字例如union_name,系统会默认在名字前加actable_idx_前缀,也就是actable_idx_union_name

columns

String[]

{}

要建立索引的字段名,不设置默认为当前标记字段名@Column的name,可设置多个建立联合索引{"login_mobile","login_name"}

12.@Unique

描述:字段设置唯一约束的注解

属性

类型

是否必填

默认值

描述

value

String

""

唯一约束的名字,不设置默认为{actable_uni_当前标记字段名@Column的name},如果设置了名字例如union_name,系统会默认在名字前加actable_uni_前缀,也就是actable_uni_union_name

columns

String[]

{}

唯一约束的字段名,不设置默认为当前标记字段名@Column的name,可设置多个建立联合唯一{"login_mobile","login_name"}

4.兼容框架配置

mybatis-plus配置方式

对于springboot架构的项目,如需使用mybatis-plus只要多依赖一下如下配置即可:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.1</version>
</dependency>

将mybatis.mapper-locations配置的内容换到mybatis-plus.mapper-locations配置中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LAMMPS学习】八、基础知识(1.4)多副本模拟

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

Redis 高可用

redis高可用介绍 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。但是在Redis语境中&#xff0c;高可用的含义似乎要宽泛一些&#xff0c;除了保证提…

android平台下opencv的编译--包含扩展模块

由于项目需要使用安卓平台下opencv的扩展库&#xff0c;对于通用的opencv库&#xff0c; opencv官网提供了android的SDK 但未能提供扩展库&#xff0c;因此需要自己进行源码编译。本文记录android平台下opencv及其扩展库的交叉编译。 前提&#xff1a;主机已安装android-ndk交…

玩美移动珠宝虚拟试戴解决方案引入glTF 2.0格式支持

领先的AIAR美妆和时尚科技解决方案提供商&#xff0c;以及"美丽AI"解决方案开发商 — 玩美移动于今日宣布&#xff0c;其AI珠宝虚拟试戴解决方案升级版本&#xff0c;性能得以显著提升。通过此次更新&#xff0c;玩美移动系统现可支持glTF 2.0&#xff08;图形库传输…

启明智显技术分享|ESP32-C3助力Model 3C芯片86盒彩屏开发板实现3MB波特率OTA程序升级和单独图片升级

在物联网快速发展的今天&#xff0c;彩屏显示作为人机交互的重要一环&#xff0c;其显示效果和升级便利性成为了衡量产品竞争力的关键指标。而Model 3C(以下简称M3C芯片&#xff09;与ESP32-C3的结合&#xff0c;无疑为物联网彩屏领域应用奠定了坚实的基石。 M3C芯片 是启明智…

碳视野 | 今后五年国家重点支持三类双碳项目!

一、政策背景 4月8日&#xff0c;国家发展改革委印发《节能降碳中央预算内投资专项管理办法》&#xff08;以下简称《办法》&#xff09;,明确了专项资金重点支持范围和标准&#xff0c;重点支持重点行业和重点领域节能降碳、循环经济助力降碳等方向&#xff0c;重点支持内容包…

Seata框架实现分布式事务(一)CAP理论

1、什么是事务 事务是指一系列数据库操作&#xff0c;它们被看作是一个逻辑单元&#xff0c;并且要么全部成功地执行&#xff0c;要么全部失败地回滚到初始状态&#xff0c;以确保数据的一致性和完整性。事务具有以下四个特性&#xff0c;通常被称为 ACID 特性&#xff1a; 所…

VMware安装kylin系统

安装成功画面 1.点击如下链接&#xff0c;下载iso镜像 openKylin开源操作系统 选择图片中的镜像进行下载 此处一定要选择稍后安装系统

常用特征分箱算法

特征分箱是构建信用评分过程中最重要的一个环节。特征分箱是对连续变量离散化的一种简称&#xff0c;对于连续型变量&#xff0c;需要对其连续值进行拆分&#xff0c;并进行后续的分箱调整工作&#xff1b; 对于离散型变量&#xff0c;通常要根据每个离散值计算其坏样本占比或…

创新实训2024.04.11日志:self-instruct生成指令

1. 参考文献 代码&#xff1a;https://github.com/yizhongw/self-instruct论文&#xff1a;https://arxiv.org/abs/2212.10560 2. 前沿论文阅读 2.1. self-instruct技术的优势 作者在文章中提到&#xff1a; The recent NLP literature has witnessed a tremendous amount …

时光清浅,百事从欢

裙身主图案采用寓意丰富的石榴印花石榴花开红火&#xff0c;枝叶茂盛恰好契合“时来运转”的主题希望宝贝们都能如石榴般坚韧生长&#xff0c;好运连连裙型设计深蕴国风美学&#xff0c;融合现代剪裁工艺将古典韵味与时尚元素完美交融领口处巧妙运用中式立领设计既保留了传统服…

SketchBook2014 下载地址及安装教程

SketchBook是一款专业级别的绘图与绘画软件。它提供了丰富的绘画工具和创意功能&#xff0c;适用于艺术家、插画师、设计师和数字艺术爱好者。SketchBook具有直观的用户界面&#xff0c;简单而强大的绘制工具&#xff0c;能够帮助用户在数字平台上创造出精美的艺术作品。 Sket…

【软件测试之因果图法】

【软件测试之判断表法】(蓝桥课学习笔记) 1、因果图法的概念 因果图法是一种利用图解法分析输入的各种组合情况&#xff0c;从而设计测试用例的方法&#xff0c;它适合于检查程序输入条件的各种情况的组合。因果图&#xff08;Cause-Effect-Graphing&#xff09;提供了把规则转…

水电智能远程抄表系统

水电智能远程抄表系统是一种应用先进技术实现水电抄表的智能化管理系统&#xff0c;通过远程抄表、数据传输和智能分析&#xff0c;实现了对水电使用情况的实时监测和管理。本文将从系统特点、构成以及带来的效益三个方面展开介绍。 系统特点 1.远程抄表&#xff1a;系统能够…

Day37:LeedCode 738.单调递增的数字 968.监控二叉树 蓝桥杯 翻转

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输出: 9 思路: 假设这个数是98,…

HCIP-Datacom H12-831 题库补充(4/12)

2024年 HCIP-Datacom&#xff08;H12-831&#xff09;最新题库&#xff0c;完整题库请扫描上方二维码&#xff0c;持续更新。 以下关于OSPF Sham Link的描述&#xff0c;错误的是哪一项&#xff1f; A&#xff1a;为了使VPN流量通过MPLS VPN骨干网转发&#xff0c;Sham Link的路…

docker 安装初体验

文章目录 前言简介一、准备工作1.1 安装docker1.2 查看版本1.3 启停docker 二、docker命令介绍2.1 查看doeker容器2.2 查看doeker镜像2.3 docker基本命令 三、下载镜像、创建容器3.1 下载centos镜像3.2 测试运行镜像3.3 将宿主机的文件拷贝到容器上3.4 将容器内的文件拷贝到宿主…

RA4000CE为汽车动力传动系统提供解决方案

目前汽车电气化的水平越来越高&#xff0c;其中比较显著的一个发展方向就是将发动机管理系统和自动变速器控制系统&#xff0c;集成为动力传动系统的综合控制(PCM)。作为汽车动力的核心部件&#xff0c;通过电子系统的运用&#xff0c;将外部多个传感器和执行环节的数据进行统一…

深度学习pytorch实战第P3周--实现天气识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 引言 1.复习上周 深度学习pytorch实战-第…

一文了解HTTPS的加密原理

HTTPS是一种安全的网络通信协议&#xff0c;用于在互联网上提供端到端的加密通信&#xff0c;确保数据在客户端&#xff08;如Web浏览器&#xff09;与服务器之间传输时的机密性、完整性和身份验证。HTTPS的加密原理主要基于SSL/TLS协议&#xff0c;以下详细阐述其工作过程&…