在使用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

在使用MyBatis中SQL语句优化总结 在使用MyBatis中SQL语句优化总结

文章插图

    推荐阅读