数据库
胶泥座人
程序员永远不能说不!!!
展开
-
@Transactional(readOnly=true)引发的坑
最近项目突然出现个bug,系统中的更新功能都失效了,我郁闷了一晚上,百思不得其解。这个功能明明上线大半年了,都没有出问题,为什么突然就出问题了呢,我debug查看了n遍,发现jpa的save方法执行完之后,数据库里的数据却并没有发生变化。然后我试着去查看了一下git提交记录好家伙,可爱的同事在service实现类的上边加了个@Transactional(readOnly = true)注解,是直接在类上边加的,然后!!!!,导致了这个类下边的增删改方法都不执行了,wdnmd。查阅资料,得出结原创 2021-10-27 10:26:56 · 2017 阅读 · 0 评论 -
改变表结构时,相关的视图需要重新保存
每次修改表结构之后,一定要重新保存一下与改表相关的视图,否则根据视图取出的数据会出错!!!原创 2021-06-11 15:48:56 · 490 阅读 · 0 评论 -
解决Spring JPA删除方法报错问题
JPA删除方法报错org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query at org.springframework.orm.jpa.EntityManagerFact原创 2021-05-12 15:04:03 · 1682 阅读 · 0 评论 -
JPA动态查询语句中形参的顺序必须和方法名中属性的顺序相同!!!
JPA动态查询语句中形参的顺序必须和方法名中属性的顺序相同!!!①第一种情况:形参的顺序和方法名中属性的顺序相反× 不能查询到结果②第一种情况:形参的顺序和方法名中属性的顺序保持一致√ 可以正确查询到结果...原创 2021-04-30 19:23:07 · 1295 阅读 · 2 评论 -
数据库连接池的原理
这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。一.早期我们怎么进行数据库操作1.原理:一般来说,java应用程序访问数据库的过程是: ①装载数据库驱动程序; ②通过jdbc建立数据库连接; ③访问数据库,执行sql语句; ④断开数据库连接。2.代码...转载 2020-02-25 10:55:41 · 148 阅读 · 0 评论 -
数据库不使用外键的 9 个理由
Piotr Kononow是一位业务分析师、软件架构师和项目经理,他拥有15年以上编程经验和背景(SQL,java,C++…)。他的专长是数据仓库/ BI和商业应用,这是他的一篇文章:最近我和几位DBA和架构师争论,他们对一些数据库没有外键感到震惊,并声称这是一种设计缺陷,是不应该发生的。如果发生必须马上改正。我想与他们争辩。我的经验告诉我,很多数据库(大多数我曾经使用的)不包含外键时并...转载 2019-12-30 22:35:45 · 653 阅读 · 0 评论 -
8种最坑的SQL错误用法,第一个就很坑?
1、LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。好吧,可能90%以上的 DBA 解决该问题就到此为止。但当 LIMIT 子句变成 “LIMIT 1000000,10” 时,程序员...转载 2019-12-30 22:32:27 · 139 阅读 · 0 评论 -
[Err] 1248 - Every derived table must have its own alias(每一个派生出来的表都必须有一个自己的别名)
用嵌套查询时,会报错每一个派生出来的表都必须有一个自己的别名SELECT * from(SELECT QUARTER(updateDate) updateDate,sum(num) value FROM study_tableGROUP BY updateDate) WHERE updateDate = 3;解决办法:在第一层查询结果加一个别名a即可,如下:SELECT ...原创 2019-10-13 21:51:51 · 246 阅读 · 0 评论 -
MySql按周,按月,按日分组统计数据
<!-- 按日查询 --> SELECT DATE_FORMAT(created_date,'%Y-%m-%d') as time,sum(money) money FROM o_finance_detail where org_id = 1000 GROUP BY time <!-- 按月查询 --> SELECT DATE_FORMAT(created...转载 2019-08-06 23:06:58 · 804 阅读 · 0 评论 -
查找mysql数据库中所有包含特定名字的字段所在的表
sql语句如下:select * from INFORMATION_SCHEMA.columnswhere COLUMN_NAME Like '%placement%';placement为字段名例如,查询包含字段userId的表,在navica中的执行结果如下:附:查询数据库中所有表名称的语句SELECT table_name, table_type, engineF...原创 2019-07-24 22:21:19 · 6356 阅读 · 0 评论 -
Navicat for MySQL误操作怎么取消
在用Navicat for MySQL操作数据库中内容时不小心将其中一条数据内容都删除了,成了这个状态,但是还没有保存此状态此时只需要点击Navicat下方的这个,即可取消改变,或者按Esc键也行。...原创 2019-04-12 10:01:27 · 48805 阅读 · 8 评论 -
详解SQLServer和Oracle的分页查询
分页功能是我们的基本功,必须要牢固掌握。通过对分页算法的整理,希望对实现分页功能更得心应手了,需要的朋友可以参考下不管是DRP中的分页查询代码的实现还是面试题中看到的关于分页查询的考察,都给我一个提示:分页查询是重要的。当数据量大的时候是必须考虑的。之前一直没有花时间停下来好好总结这里。现在又将Oracle视频中关于分页查询的内容看了一遍,发现很容易就懂了。1.分页算法 最开始我在网上查找资...转载 2018-04-28 15:00:11 · 317 阅读 · 0 评论 -
SQLServer中常用的分页查询语句
前言在SqlServer中,分页查询是经常用到的查询语句,一个好的分页查询语句,不仅能将代码省略,还能提高运行效率,下面我们来探讨一下SQLServer中的分页查询语句。具体的业务逻辑是这样的,我数据库中有100条数据,我要查第40-50数据,表中有两个字段,一个字段是id,一个字段是name,其中id是不连续的,因为我删除id为44、45的记录,因为我要查数据的第40-50条记录,也就是id分别...转载 2018-04-28 14:45:35 · 3524 阅读 · 0 评论 -
如何在navicat for mysql中建立触发器
Mysql的触发器(trigger):监视某种操作,并触发另一种操作。简要说:对表M的操作A触发了对表N的操作B。 触发器创建语法四要素:1.、引发对象(哪一张表引发的?也就是说表M是谁?) 2、触发时间(after/before) 3、被触发的操作(insert/update/delete)【也就是操作B是什么?位于begin和end之间】4、本触发器名称 语法:Create trigge...转载 2018-05-02 18:20:46 · 3750 阅读 · 0 评论