随笔分类 - 数据库
用来发布一些和数据库相关的知识点
MyBatis的映射关系
摘要:MyBatis的映射关系是有一个默认的,采用下划线命名的方式将数据库表的列名按照驼峰式映射成 Java 实体类的属性名 举个例子数据库表名为 tb_user,其中的字段名为 inst_code,对应的实体类属性名为 instCode,这样不用自定义映射关系,会默认二者相对应的 我们也可以自定义映射关
阅读全文
数据库锁起来了,把事务清掉sql
摘要:select concat('kill ',id,';') from information_schema.`PROCESSLIST` where state !='executing' 将上述代码执行一下,将结果作为sql脚本运行一下,即可将数据库目前存在的事务清空
阅读全文
MybatisPlus的那些坑
摘要:1.实体类属性会被错误解析,需要加上注解@TableField @TableField("front_of_id_card") //身份证正面 private String frontOfIDCard; 上面这个属性就会被错误解析成front_of_i_d_card,加了映射关系也好像没有用 <re
阅读全文
mybatis踩坑之integer类型是0的时候会被认为0!=''是假
摘要:当你的参数类型是integer类型,并且传的是0的时候,在SQL里面做if判断的时候 <if test="auditStatus != null and auditStatus != ''"> AND audit_status = #{auditStatus} </if> 这里传进来的auditSt
阅读全文
SQL优化
摘要:1、EXPLAIN 查看SQL执行计划,重点关注下面三个字段 1)type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。 2)key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式。 3)key_len列,索引长度。 2、SQL语句中IN包含的
阅读全文
数据库索引失效场景
摘要:MySQL在哪些情况下不使用索引 ? 1. like查询使用%开头不能使用索引,但用%结尾的可以使用索引。 2. where语句中使用<>或!=。 where语句中使用or,且没有把or中的所有字段加上索引。 3. where语句中对字段表达式操作。 4. where语句中使用NOT IN。 5.
阅读全文
MySQL和Oracle里面SQL转换
摘要:oracle环境有关sql的注意事项 比较特殊的: 1. 原有 MySQL字段设置为 not null default '' 原因: ORACLE 数据库 不允许存空字符串, 认为它跟null是一样的 修改: 这种情况下, 在xml中, 我们暂时的处理办法是在xml中修改原先插入的空字符串变为固定格
阅读全文
脏读,幻读,不可重复读,以及两类数据丢失更新
摘要:脏读:是指一个事务读取到了另一事务未提交的数据,造成select前后数据不一致 如上图所示,事务A讲原来数据库里面的X值由1更新为2,这时事务B开始读取数据库数据,读到的是修改后的数据X为2,这时事务A不提交了, 数据进行回滚,X又回到了原来的值了,这个时候就发生了脏读。现象就是数据库明明是1,而读
阅读全文
S锁,X锁,乐观锁和悲观锁
摘要:S锁:S锁也叫共享锁,读锁,数据只能被读取不能被修改. X锁:X锁也叫排他锁,写锁,一个事务对表加锁后,其他事务就不能对其进行加锁与增删查改操作. 乐观锁:总是假设是最好的情况,每次去操作的时候都不会上锁,但在更新时会判断有没有其他操作去更新这个数据。 通俗讲就是我很乐观,我认为你拿走我的数据是不会
阅读全文
事务的四大特性
摘要:1.原子性事务要么完全执行,要么完全不执行2.一致性事务完成时,数据必须处于一致的状态.若事务执行途中出错,会回滚到之前的事务没有执行前的状态,这样数据就处于一致的状态.若事务出错后没有回滚,部分修改的内容写入到了数据库中,这时数据就是不一致的状态.3.隔离性同时处理多个事务时,一个事务的执行不能被
阅读全文