ACTable开源框架的使用及异常

介绍

ACTable是对Mybatis做的增强功能,支持SpringBoot以及传统的SpringMvc架构,配置简单,使用方便。主要是自动生成数据库表,直接修改java代码,数据库就会对应的变化,省去在调整数据库表的问题,在开发阶段非常实用。
本项目使用的springboot3.2.2版本,集成Mybatis,Mybatis-plus, ACTable组件.

配置文件:

# actable的配置信息
actable:table:auto: createmodel:pack: com.xxx.yours_project.*.entitydatabase:type: mysql#actable.index.prefix=自己定义的索引前缀#该配置项不设置默认使用actable_idx_#actable.unique.prefix=自己定义的唯一约束前缀#该配置项不设置默认使用actable_uni_# mybatis自有的配置信息,key也可能是:mybatis.mapperLocations
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xmltype-handlers-package: com.xxx.yours_project.base.util

springboot3.0以后,ACTable的自启动已经失效,先要配置主动启动:

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

异常

在使用Mybatis-plus时,需要注意:

  1. 配置文件中是:mybatis-plus.mapper-locations;
  2. 在build.gradle文件中,引入的是:com.baomidou:mybatis-plus-boot-starter,而非com.baomidou:mybatis-plus
  3. 在使用自定义handle时,要注意 @MapperType,
    开始时作者使用@MappedTypes({List.class, String.class}),但是启动后报错,原因是Mybatis将这个handle滥用了,导致失败,改用@Component,项目正常启动,不再报错
    慎用@MapperType:
//@MappedTypes({List.class, String.class})
@Component
public class ListStringHandle implements TypeHandler<List<String>> {@Overridepublic void setParameter(PreparedStatement preparedStatement, int i, List<String> strings, JdbcType jdbcType) throws SQLException {if (CollectionUtils.isNotEmpty(strings)) {preparedStatement.setString(i, strings.stream().collect(Collectors.joining(",")));} else {preparedStatement.setString(i, null);}}@Overridepublic List<String> getResult(ResultSet resultSet, String s) throws SQLException {if (StringUtils.isNotEmpty(resultSet.getString(s))) {return Arrays.asList(resultSet.getString(s).split(","));}return null;}@Overridepublic List<String> getResult(ResultSet resultSet, int i) throws SQLException {if (StringUtils.isNotEmpty(resultSet.getString(i))) {return Arrays.asList(resultSet.getString(i).split(","));}return null;}@Overridepublic List<String> getResult(CallableStatement callableStatement, int i) throws SQLException {if (StringUtils.isNotEmpty(callableStatement.getString(i))) {return Arrays.asList(callableStatement.getString(i).split(","));}return null;}
}

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

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

相关文章

笔试刷题(持续更新)| Leetcode 45,1190

45. 跳跃游戏 题目链接&#xff1a; 45. 跳跃游戏 II - 力扣&#xff08;LeetCode&#xff09; 这道题思路不难记&#xff0c;遍历数组每个位置&#xff0c;更新下一次的范围&#xff0c;当当前位置已经在当前范围之外时&#xff0c;步数一定得加一&#xff0c;当前范围更新成…

蓝桥杯官网填空题(质数拆分)

问题描述 将 2022 拆分成不同的质数的和&#xff0c;请问最多拆分成几个&#xff1f; 答案提交 本题为一道结果填空的题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将结果输出即可。 运行限制 import java.util.Scanner;public class Main {static int …

Pandas Series 的学习笔记

Pandas Series 的学习笔记 0. Pandas 简介1. Series 学习1-1. 创建 Series1-2. 索引1-3. 选择数据1-4. 修改 Series1-5. Series 的操作 2. 结论 0. Pandas 简介 想象一下&#xff0c;你有一张超级大的餐桌&#xff0c;上面放满了各种各样的食物。Pandas 就像是这张餐桌&#x…

面试:大数据和深度学习之间的关系是什么?

大数据与深度学习之间存在着紧密的相互关系&#xff0c;它们在当今技术发展中相辅相成。 大数据的定义与特点:大数据指的是规模(数据量)、多样性(数据类型)和速度(数据生成及处理速度)都超出了传统数据处理软件和硬件能力范围的数据集。它具有四个主要特点&#xff0c;通常被称…

【Java】零基础蓝桥杯算法学习——二分查找

算法模板一: // 数组arr的区间[0,left-1]满足arr[i]<k,[left,n-1]满足arr[i]>k;Scanner scan new Scanner(System.in);int[] arr {1,2,3,4,5};int left 0,right arr.length-1;int k scan.nextInt();while(left<right) {//leftright时退出循环int mid (leftrigh…

leetcode(双指针)11.盛最多水的容器(C++详细解释)DAY9

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回…

【Django】Django项目部署

项目部署 1 基本概念 项目部署是指在软件开发完毕后&#xff0c;将开发机器上运行的软件实际安装到服务器上进行长期运行。 在安装机器上安装和配置同版本的环境[python&#xff0c;数据库等] django项目迁移 scp /home/euansu/Code/Python/website euansuxx.xx.xx.xx:/home…

Rust的Match语句:强大的控制流运算符

在Rust中&#xff0c;match语句是一种强大的控制流运算符&#xff0c;用于比较一个值与一系列模式&#xff0c;并执行与第一个匹配的模式对应的代码块。它提供了一种清晰而灵活的方式来处理多个条件&#xff0c;使得代码更加可读、易于理解。 Match语句的基本使用 首先&#…

2月14作业

21.C 22.D 23.B 5先出栈表示1&#xff0c;2&#xff0c;3&#xff0c;4已经入栈了&#xff0c;5出后4出&#xff0c;但之后想出1得先让3&#xff0c;2先后出栈&#xff0c;所以 B 不可能 24.10&#xff0c;12&#xff0c;120 25.2&#xff0c;5 26.可能会出现段错误…

js importmap

在html文件中使用npm 下载的包&#xff0c;比如vue&#xff0c;在使用import引入的时候会报错 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-widt…

vue使用Mars3d弹框嵌套video视频/实时视频(flv) 使用jessibuca.js播放器

在html引入jessibuca.js (还需下载decoder.js&#xff0c;decoder.wasm) http://jessibuca.monibuca.com/player.html 官方下载 <script type"text/javascript" src"./jessibuca.js"></script> 同Mars3d弹框嵌套视频播放m3u8前面相同 1.播放…

OpenCV基础:用Python生成一幅随机的噪声图像

使用Python&#xff1a;生成一幅随机数值的灰度图像&#xff0c;图像大小为1616像素。借助OpenCV库。输出数值&#xff0c;并显示图像。 # -*- coding: utf-8 -*- """ Created on Wed Feb 14 21:49:09 2024author: 李立宗公众号&#xff1a;计算机视觉之光知识…

SQL世界之命令语句Ⅱ

目录 一、SQL TOP语句 1.TOP 子句 2.SQL TOP 实例 3.SQL TOP PERCENT 实例 二、SQL LIKE 操作符 1.LIKE 操作符 2.SQL LIKE 操作符语法 3.LIKE 操作符实例 三、SQL通配符 1.SQL 通配符 2.使用 % 通配符 3.使用 _ 通配符 4.使用 [charlist] 通配符 四、SQL IN操作…

Raspbian简易RTSP服务

Raspbian简易RTSP服务 1. 源由2. 搭建简易RTSP服务器2.1 系统安装2.2 软件安装2.3 命令介绍2.3.1 libcamera-hello2.3.2 libcamera-vid2.3.3 cvlc 3. 实测4. 参考资料 1. 源由 鉴于前期的一些准备工作&#xff1a; 《ArduPilot开源飞控之Companion Computers简单分析》《Ardu…

Python re找到特定pattern并将此pattern重复n次

要找到字符串s中的数字&#xff0c;并将这些数字重复3次&#xff1a; import re s "abc123def456ghi789" # 找到所有的数字 numbers re.findall(r\d, s) # 重复每个数字3次 repeated_numbers [num * 3 for num in numbers] # 将重复的数字放回原位置 #…

【QT+QGIS跨平台编译】之四十:【gsl+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、GSL介绍二、GSL下载三、文件分析四、pro文件五、编译实践一、GSL介绍 GSL(GNU Scientific Library)是一个开源的数值计算库,用于提供一系列常用的数学函数和算法。它为科学计算和数据分析提供了高效、可靠的工具。 GSL库提供了丰富的功能,包括数值积分、数值…

C++-带你深度理解string类的常见接口

1. 为什么学习string类&#xff1f; C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&#xff0c;而且底层空间需…

“从根到叶:深入理解堆数据结构“

​​​​​​​ 一.堆的概念及实现 1.1堆的概念 在数据结构中&#xff0c;堆是一种特殊的树形数据结构。堆可以分为最大堆和最小堆两种类型。 最大堆&#xff1a;对于堆中的任意节点&#xff0c;其父节点的值都不小于它的值。换句话说&#xff0c;最大堆中的根节点是堆中的最…

AI论文速读 | 2024【综述】图神经网络在智能交通系统中的应用

论文标题&#xff1a;A Survey on Graph Neural Networks in Intelligent Transportation Systems 链接&#xff1a;https://arxiv.org/abs/2401.00713 作者&#xff1a;Hourun Li, Yusheng Zhao, Zhengyang Mao, Yifang Qin, Zhiping Xiao, Jiaqi Feng, Yiyang Gu, Wei Ju, …

PR:熟悉PR工作环境

新建项目 设置自己的页面布局 首选项