SQL 数据库
文章平均质量分 55
bamboo_cqh
自律的白丁>_<客观的评判,有责任心的发言。
展开
-
mybatis批量insert出现Error getting generated key or setting result to parameter object解决办法
在写批量插入时遇到了一个MyBatisSystemException,ExecutorException: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.binding.BindingException: Parameter 'serialNumber' not found. Available parameters are [list] 这句话的意思是,在获取生成的ke转载 2021-08-19 08:35:26 · 2938 阅读 · 0 评论 -
mybatis添加记录时返回主键id
方法:int insert(PdProduct record);int insertSelective(PdProduct record);int 返回来的其实他影响的行数,也就是你插入一条数据, 他返回来的并不是你插入进去他数据的唯一ID使用xml配置方式1.xml配置:<!-- 插入数据:返回记录的id值 --><insert id="insertOneTest" parameterType="org.chench.test.mybatis.model.Tes.转载 2021-04-20 17:20:23 · 249 阅读 · 0 评论 -
记mysql中#和$的区别
今天看mysql的mapper代码,忽然想起mysql中#和$好像是有区别的,但是具体记得不是很清楚。就百度查了下。整理如下。首先无脑总结: 1、# 自己会带有双引号,$并不会。 2、#的优势就在于它能很大程度的防止sql注入,而$则不行。 3、#的性能优于$,能使用 #{ } 的地方就用 #{ }。 4、MyBatis排序时使用order by 动态参数时需要注意,用$而不是#。然后仔细分析细节:参考于https://blog.csdn.net/q...原创 2021-03-03 09:34:05 · 1112 阅读 · 0 评论 -
MySQL中id自增面试题讨论
前几天偶然看到大家在讨论一道面试题,而且答案也不够统一,我感觉蛮有意思,在此就做一个解读,整个过程中确实会有几处反转。我们先来看下题目:一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把MySQL重启,再Insert一条记录,这条记录的ID是18还是15.和后面的一些题目整体来看,难度不大,都是一些看起来很基础的问题,但是这道...转载 2019-11-05 13:51:23 · 381 阅读 · 0 评论 -
在创建索引的时候指定索引字段的长度
mysql创建索引的时候指定索引长度大部分的索引前面一部分的长度就能够有很好的区分度了。 通过减小索引长度,这样能够减小索引文件的大小,能够加快数据的insert。语法CREATE INDEX index_name ON table_name (column_name(length), clolumn_name(length)…);如何确认当前字段设置一个合适的长度呢? sel...原创 2018-08-21 10:32:37 · 2300 阅读 · 0 评论 -
深入浅出数据库索引原理
前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了。我第一反应觉的是数据库上的问题,假装思索了一下,摆着一副深沉炫酷的模样说:“是不是数据库查询上出问题了, 给表加上索引吧”,然后妹子来了一句:“现在我们网站访问量太大,加索引有可能导致写入数据时性能下降,影响用户使用的”。当时我就楞了...转载 2019-05-21 11:21:21 · 169 阅读 · 0 评论 -
MyBatis框架及原理分析
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情:封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转换MyBatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便地写出SQL和方便地获取SQL的执行结果才是MyBatis的核心竞争力。MyBatis的配置MyBatis框架和其他绝...转载 2019-05-21 13:01:53 · 141 阅读 · 0 评论 -
线程池工作队列饱和策略
Java线程池会将提交的任务先置于工作队列中,在从工作队列中获取(SynchronousQueue直接由生产者提交给工作线程)。那么工作队列就有两种实现策略:无界队列和有界队列。无界队列不存在饱和的问题,但是其问题是当请求持续高负载的话,任务会无脑的加入工作队列,那么很可能导致内存等资源溢出或者耗尽。而有界队列不会带来高负载导致的内存耗尽的问题,但是有引发工作队列已满情况下,新提交的任务如何管理的...转载 2019-05-29 12:05:44 · 270 阅读 · 0 评论 -
redis两种持久化策略
reids是一个key-value存储系统,为了保证效率,缓存在内存中,但是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以保证数据的持久化。所以:redis是一个支持持久化的内存数据库,可以将内存中的数据同步到磁盘保证持久化。Redis的持久化策略:2种---------rdb:快照形式是直接把内存中的数据保存到...原创 2019-06-14 10:55:42 · 4833 阅读 · 0 评论 -
Redis报错:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing
今天安装Redis的时候,报了一个错误:我也遇到了xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools),missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun12后来发现是因为Mac最新场景下安装...转载 2019-07-03 12:12:07 · 543 阅读 · 0 评论 -
数据库的四种隔离级别的实现方式
说道数据库的四种隔离级别,就要先说数据库的ACID,原子性,一致性,隔离性和持久性,这四种隔离级别就是针对数据库的隔离性,下面针对数据库的隔离性来说说数据库会遇到什么问题,以及每一种隔离级别到底解决了什么问题。针对隔离性遇到的问题如下:1. 脏读(如有事务A和B,A读取了B未提交的数据)2. 不可重复读(如有事务A和B,A负责读取,B负责写入,A连续读的过程中B写入了一次,...原创 2018-07-23 17:36:14 · 3617 阅读 · 3 评论 -
数据库设计(表与表之间的3种关系)
表与表之间一般存在三种关系,即一对一,一对多,多对多关系。 下面分别就三种关系讲解数据库相关设计的思路和思考过程;(1)一对一关系 例如,下面的一张表,保存了人的相关信息,有男有女,要求查处所有的夫妻。 sql代码:CREATE TABLE IF NOT EXISTS person( id INT PRIMARY KEY AUTO_INCREMENT, sn转载 2017-11-28 13:46:34 · 13025 阅读 · 0 评论 -
关于数据库主键和外键
一、什么是主键、外键:(这个写的不错,复制了过来)关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩)转载 2017-11-28 09:21:14 · 181 阅读 · 0 评论 -
应对并发
前两天收到一个消息是这样说的,一个学生去面试,题目赫然就是从浏览器输入url到网页打开,都发生了什么。这个学生特别开心,因为订阅了我的公众号,所以对这类问题早有准备。希望他能顺利拿到心仪的offer。参见旧文 一则经典技术面试题目的解读书归正传,应对并发,其实从整体架构来说分很多部分,比如常见的,存储层的i/o优化,网络层负载均衡,通讯层的连接池等等,不过我这里不讲这些转载 2016-12-17 17:02:14 · 253 阅读 · 0 评论 -
触发器与存储过程的区别
触发器原理: 触发器与存储过程非常相似,触发器也是SQL语句集,两者唯一的区别是触发器不能用EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发(激活)执行。触发器是在一个修改了指定表中的数据时执行的存储过程。通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以确保数据转载 2017-01-23 09:29:00 · 478 阅读 · 0 评论 -
hibernate save和update以及saveOrUpdate区别
save()方法很显然是执行保存操作的,如果是对一个新的刚new出来的对象进行保存,自然要使用这个方法了,数据库中没有这个对象。update()如果是对一个已经存在的托管对象进行更新那么肯定是要使用update()方法了,数据中有这个对象。saveOrUpdate()这个方法是更新或者插入,有主键就执行更新,如果没有主键就执行插入。 区别:对于一个从托管状态到瞬态的原创 2017-03-01 23:44:30 · 277 阅读 · 0 评论 -
hibernate延迟加载(get和load的区别)
在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就是通过session.load()方法,然后其实这两种方法在获得一个实体对象时是有区别的,在查询性能上两者是不同的。一.load加载方式当使用load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当我们使用session原创 2017-03-01 23:46:35 · 319 阅读 · 0 评论 -
数据库索引的实现原理
强烈建议参阅链接:http://www.linezing.com/blog/?p=798#nav-1说白了,索引问题就是一个查找问题。。。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向转载 2017-02-25 14:12:19 · 334 阅读 · 0 评论 -
oracle中插入数据出现乱码问题的解决
思路: 注册表跟系统环境变量里的字符集统一。1.在运行中输入regedit,打开注册表编辑器2.HKEY_LOCAL_MACHINE->SOFTWARE->Oracle->KEY_OraClient11g_home1看见 NLS_LANG 将:SIMPLIFIED CHINESE_CHINA.ZHS16GBK3.cmd --> set发现nls_lang=AME原创 2017-03-27 18:45:22 · 758 阅读 · 0 评论 -
PowerDesigner Reference 外键
我们可能在Powerdesigner中,直接新建物理模型或(先设计概念、逻辑模型而生成物理模型)或(连接现有数据库,逆向生成物理模型)。在物理模型中,B表生成外键时,引用的A表需要已经设置主键。1、如果B表中没有外键列,则直接使用工具reference,B表中自动生成外键列,如下图:2、如果B表中已经有列和A中主键列相同,则直接使用工具reference,使用B表已转载 2017-11-28 17:02:28 · 4042 阅读 · 0 评论 -
PowerDesigner中,修改column的name和Code同步问题
PowerDesigner中,但修改了某个字段的name,其code也跟着修改,这个问题很讨厌,因为一般来说,name是中文的,code是字段名。解决方法如下:1、选择Tools->GeneralOptions...菜单,出现General Options对话框。2、从Category中选择Dialog项。3、取消右边“Name to Code mirroring”转载 2017-11-29 09:10:38 · 733 阅读 · 0 评论 -
触发器与存储过程的区别
触发器原理: 触发器与存储过程非常相似,触发器也是SQL语句集,两者唯一的区别是触发器不能用EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发(激活)执行。触发器是在一个修改了指定表中的数据时执行的存储过程。通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以确保数据转载 2016-11-18 16:00:49 · 523 阅读 · 0 评论