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

news2024/11/15 11:08:59

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: none
  model:
    pack: 扫描的包路径
  database:
    type: mysql  //支持的数据库,目前只支持mysql
  index:
    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.coloradmin.cn/o/1596540.html

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

相关文章

如何做一个springboot的starter类型的SDK

关键的东西 首先我们是一个starter类型的SDK&#xff0c;为了给调用者使用&#xff0c;其中有一些Bean我们会放到SDK中&#xff0c;并且这些Bean能够注入到调用者的Spring容器中。 最关键的spring.factories文件 这个文件所在位置如下图所示&#xff0c;该文件通过写入一下代…

自定义vue-cli 实现预设模板项目

模板结构 主要包括四个部分&#xff1a; preset.jsonprompts.jsgenerator/index.jstemplate/ 项目最终结构 preset.json preset.json 中是一个包含创建新项目所需预定义选项和插件的 JSON 对象&#xff0c;让用户无需在命令提示中选择它们&#xff0c;简称预设&#xff1b;…

文献速递:深度学习肝脏肿瘤诊断---基于深度学习的肝细胞结节性病变在整片组织病理图像上的分类

Title 题目 Deep Learning-Based Classification of Hepatocellular Nodular Lesions on Whole-Slide Histopathologic Images 基于深度学习的肝细胞结节性病变在整片组织病理图像上的分类 Background 背景 Hepatocellular nodular lesions (HNLs) constitute a heterogen…

Offer必备算法26_BFS解决最短路_四道力扣题(由易到难)

目录 ①力扣1926. 迷宫中离入口最近的出口 解析代码 ②力扣433. 最小基因变化 解析代码 ③力扣127. 单词接龙 解析代码 ④力扣675. 为高尔夫比赛砍树 解析代码 本篇完。 ①力扣1926. 迷宫中离入口最近的出口 1926. 迷宫中离入口最近的出口 难度 中等 给你一个 m x …

SpringBoot学习(二)WEB开发

文章目录 WEB开发WebMvcAutoConfiguration原理生效条件效果WebMvcConfigurer接口静态资源源码规则EnableWebMvcConfiguration规则容器中WebMvcConfigurer配置底层行为 Web场景自动配置默认效果 静态资源默认规则静态资源映射静态资源缓存欢迎页Favion 自定义静态资源规则配置方…

PINet车道线检测+YOLOv8视频目标检测

前言&#xff1a; 本文主要目的是实现在PINet车道线检测的代码中嵌入YOLOv8的目标检测模块&#xff0c;具体效果如图所示&#xff1a; 在学习和使用YOLOv8进行目标检测时&#xff0c;感觉可以和最近研究的车道线检测项目结合起来&#xff0c;形成一套如上图所示的视频效…

2024/4/14周报

文章目录 摘要Abstract文献阅读题目创新点CROSSFORMER架构跨尺度嵌入层&#xff08;CEL&#xff09;CROSSFORMER BLOCK长短距离注意&#xff08;LSDA&#xff09;动态位置偏置&#xff08;DPB&#xff09; 实验 深度学习CrossFormer背景维度分段嵌入&#xff08;DSW&#xff09…

【图像分类】基于深度学习的轴承和齿轮识别(ResNet网络)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内,不想订阅专栏的兄弟们可以私信…

如何远程连接电脑?

远程连接电脑是一种技术&#xff0c;能够使用户在不同地点的电脑之间建立连接&#xff0c;实现互相访问和控制的功能。这项技术为我们提供了便利和效率&#xff0c;使得随时随地的协同办公、异地统一管理和远程数据采集管理成为可能。 【天联】的使用场景 远程连接电脑的应用非…

SAP 转储单库存可用性检查详解

客户需求在下转储单以及公司间STO时候检查发货方是否库存够,如果有库存则可以创建,没有则不让创建。以免在DN过账时候才提示库存不够,把检查库存是否充足前移。 我们知道销售单是有可用性检查功能的,那么采购转储单是否也有同样功能呢? 可用性检查控制可理解为检查组和检…

微信小程序认证指南及注意事项

如何认证小程序&#xff1f; 一、操作步骤 登录小程序后台&#xff1a; https://mp.weixin.qq.com/ (点击前往) 找到设置&#xff0c;基本设置&#xff1b; 在【基本信息】处有备案和认证入口&#xff1b; 点击微信认证的【去认证】; 按照步骤指引一步步填写信息&#xff…

使用阿里云试用Elasticsearch学习:Search Labs Tutorials 搭建一个flask搜索应用

文档&#xff1a;https://www.elastic.co/search-labs/tutorials/search-tutorial https://github.com/elastic/elasticsearch-labs/tree/main/example-apps/search-tutorial Full-Text Search

盲人出行安全保障:科技革新助力无障碍生活新纪元

作为一名资深记者&#xff0c;我有幸见证了一场科技如何深刻改变视障群体生活的壮丽篇章。在这场变革中&#xff0c;盲人出行安全保障成为焦点&#xff0c;一款融合先进科技与人文关怀的辅助应用正以前所未有的力量&#xff0c;帮助盲人朋友们打破传统束缚&#xff0c;实现安全…

每日OJ题_BFS解决最短路④_力扣675. 为高尔夫比赛砍树

目录 力扣675. 为高尔夫比赛砍树 解析代码 力扣675. 为高尔夫比赛砍树 675. 为高尔夫比赛砍树 难度 困难 你被请来给一个要举办高尔夫比赛的树林砍树。树林由一个 m x n 的矩阵表示&#xff0c; 在这个矩阵中&#xff1a; 0 表示障碍&#xff0c;无法触碰1 表示地面&…

【大语言模型】基础:余弦相似度(Cosine similarity)

余弦相似度是一种用来确定两个向量之间相似性的度量。它在数据科学、信息检索和自然语言处理&#xff08;NLP&#xff09;等多个领域被广泛使用&#xff0c;用于度量在多维空间中两个向量之间角度的余弦。这个指标捕捉的是方向上的相似性而非大小&#xff0c;使其非常适合比较长…

专业SEO优化指南:设置网站关键词的详细步骤

在网站SEO优化的过程中&#xff0c;关键词的设置是提升网站排名的关键步骤之一。那么&#xff0c;作为一名专业的SEO人员&#xff0c;如何有效地进行关键词设置呢&#xff1f;以下是一些详细的步骤&#xff1a; 1. 确定网站的核心关键词。 这需要深入理解网站的主题或产品。通…

结合创新!ResNet+Transformer,高性能低参数,准确率达99.12%

今天给各位介绍一个发表高质量论文的好方向&#xff1a;ResNet结合Transformer。 ResNet因其深层结构和残差连接&#xff0c;能够有效地从图像中提取出丰富的局部特征。同时&#xff0c;Transformer的自注意力机制能够捕捉图像中的长距离依赖关系&#xff0c;为模型提供全局上…

GPT人工智能在线网页版大全

平民不参与内测&#xff0c;还能使用 ChatGPT 吗&#xff1f; 自去年 ChatGPT 爆红以来&#xff0c;关于它的消息铺天盖地。如果你真的想使用它&#xff0c;途径有很多。除了官方网站外国内还有许多 ChatGPT 的镜像网站&#xff0c;其中不乏免费的 3.5 版本。虽然有些网站需要…

byobu

byobu 终端多路复用器 一、byobu 安装二、byobu 使用三、其他终端多路复用器四、ssh byobu 远程协作 系统环境: linux(ubuntu,debian,kali) 一、byobu 安装 byobu 是包装过的tmux #sudo apt install tmux sudo apt install byobubyobu二、byobu 使用 创建窗口: Ctrl a c…

秋招复习笔记——八股文部分:网络基础

TCP/IP 网络模型 应用层 最上层的&#xff0c;也是我们能直接接触到的就是应用层&#xff08;Application Layer&#xff09;&#xff0c;我们电脑或手机使用的应用软件都是在应用层实现。那么&#xff0c;当两个不同设备的应用需要通信的时候&#xff0c;应用就把应用数据传…