在使用MyBatis中SQL语句优化总结
MyBatis作为一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射 。它免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作 。还可以通过简单的XML或注解来配置和映射原始类型、接口和JavaPOJO(PlainOldJavaObjects,普通老式Java对象)为数据库中的记录 。接下来为大家带来在日常应用的过程中的一些小技巧 。
1
MyBatis总结
1.MyBatis查询/更新语句,没有找到符合条件的记录,会返回什么?返回类型为String的:实际返回null;返回类型为对象的:实际返回null;返回类型为列表等集合:实际返回空集合[];返回类型为Boolean:实际返回false当数据库语句插入条件不满足,会返回false;比如使用dual的SQL语句;
2.mybatis会抛出哪些常见异常?不是所有的异常,都认为程序出异常要报错;比如用户重复收藏商品,可以直接返回成功,这时候对“违反唯一键”异常要特殊处理 。
(1)插入语句DataIntegrityViolationException:违反非空约束、数据大小超过约束DuplicateKeyException:违反唯一键约束CannotAcquireLockException:forupdatenowait超时
(2)更新语句条件不满足时,会返回false数据库操作应该判断返回值,比如下面BUG:(3)bug类,表字段找不到等场景MyBatisSystemExceptionBadSqlGrammarException
【在使用MyBatis中SQL语句优化总结】3.事务里面套用forupdate,看上去绕过了事务等forupdate获取锁后,select出来的是最新的数据4.forupdate是一种行级锁,又叫排它锁一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行;如果查询条件带有主键,会锁行数据,如果没有,会锁表 。如果一定要用FORUPDATE,建议加上NOWAIT或forupdatewait3
2
文章插图
推荐阅读
- 如何搞定共模干扰?
- 猪瘟猪在圈里为什么会被传染?
- 非州猪瘟病毒在常温下存活时间?
- 现在在农村养鸡需要什么条件?
- 和谐号和复兴号的区别在哪里_和谐号和复兴号哪个快
- 得到女人之后的星座男都有什么变化 得不到的永远在骚动
- 恋爱中只把承诺挂在嘴上的星座 认真你就输了
- 三星在5nm到3nm芯片实现了跳跃式发展
- 金牛座的偷腥指数有多少 他们更在乎一些身外物
- 双子座的偷腥指数有多少 犯错只在一瞬间