数据库
文章平均质量分 50
Run_the_ant
我曾写过的每一行代码,都是对现实世界的序列化,所以我要尽自己最大的努力,让序列化后的世界更美一点!
展开
-
JPA连接达梦数据库导致auto-ddl失效问题解决
这个映射部分源码要跟的很深,总的来说就是从数据库拿到的表名都是小写的,但是匹配的时候是将实体类上@Table的name值转为大写后再进行映射,而且这个是在达梦数据库的驱动里面设置的,重写方言的buildIdentifierHelper方法也没用。项目使用了JPA,并且auto-ddl设置的为update,在连接达梦数据库的时候,第一次启动没有问题,但是后面重启就会报错,发现错误为重复建表,也就是说已经建好的表没有检测到,又重新走的建表流程。1、达梦数据库创建数据库实例的时候使用默认的规则,区分大小写。原创 2023-07-26 16:56:03 · 1447 阅读 · 0 评论 -
JpaRepository.save()居然调用了2次insert?
先描述一下场景:我需要对用户实体进行数据鉴权,所以期望的是监听用户的save()方法执行后,同步执行新增数据权限,并且给对应的用户分配该数据权限。问题来了,在没有做数据权限前,save方法执行正常,加入了监听器之后,save方法就insert了2次,然后就是报主键冲突(因为是同一个对象)。看一下实现:第一步,创建用户实例第二步,创建监听器第三步,User对象注册监听器第四步,开始测试可以看到,一模一样的数据被insert了2次。然后跟到源码查了一下原因,...原创 2022-05-09 19:00:37 · 1585 阅读 · 2 评论 -
JSON数据生成扁平化字段名
用标准规则生成扁平化数据是无法直接作为数据库的列名定义的,如果想直接用于列名定义请查看,如果想用标准化的扁平化方案,请搜索JsonFlattener的使用 /** * JSON扁平化总入口 * * 会将所有的_去除 * 会将_后的第一个字母大写 * @param json * @return */ public static JSONArray unfold(String json) { if (jso原创 2021-01-19 16:21:58 · 776 阅读 · 2 评论 -
根据JsonSchema生成阿里云ClickHouse建表语句
mybatis对ClickHouse的支持不是很好,JPA又没有对应的方言,做数仓需要大批量解析JSON数据,希望能自动根据JSONSchema定义来自动建表,节省工作量,并且不用为了复杂JSON建对象,还要服务发版。这个工具应用场景可能不是那个多,希望能帮到你,自己写也挺麻烦的。如果想要获取根据JSON数据生成Insert语句的同学请查看下一篇文章生成规则1、表数量与JsonSchema的properties节点数保持一致2、数据类型转换: schemaType ...原创 2021-01-19 16:11:04 · 1038 阅读 · 1 评论 -
根据JsonSchema生成数据库表名
生成方式根据JsonSchema的各层级的key,用下划线拼接 private static final String SCHEMA_TYPE = "type"; private static final String SCHEMA_TYPE_OBJECT = "object"; private static final String SCHEMA_TYPE_ARRAY = "array"; private static final String SCHEMA_TYP原创 2021-01-19 16:01:24 · 591 阅读 · 0 评论 -
MySQL对字符串类型的排序号进行排序
ORDER BY CAST(字段名 AS DECIMAL)原创 2018-02-27 09:32:46 · 1689 阅读 · 0 评论 -
数据库和数据库实例的概念
很多人都把这两个概念弄混淆,认为MySQL是数据库,也是数据库实例。这样的理解在应用到Oracle和SQL Server的时候可能是正确的,但是再MySQL的体系结构中确是不适用的。那么从概念上理解,该如何区分数据库和数据库实例呢?数据库:数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合;数据库实例:数据库实例是程序,是位于用户和操作系统之间的一层数...原创 2018-08-28 14:24:54 · 54928 阅读 · 5 评论 -
必须要会的SQL优化方法
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.备注、描述、评论之类的...原创 2018-10-23 17:07:13 · 2350 阅读 · 2 评论