事务,mybatis

Posted Hary520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事务,mybatis相关的知识,希望对你有一定的参考价值。

数据库事务:一件完整的事情, 要么全部成功,要么就全部失败

金典案例:转账

A给B转账:100

     A:-100

     B:+100

如何开启事务:

Start transaction;

     之前的转账操作(如果在转账过程中出现异常:rollback)

Commit;

 

事务的特性(ACID):

原子性:要么全部成功 要么全部失败 不可以分割

一致性:事务前后,所有的状态都要保持一致

隔离性:一个事务最好不要受到其他事务的影响

持久性:将提交或者回滚的事务 存储到数据库中

 

不考虑隔离性:

脏读:读取到另一个事务中未提交的数据

不可重复读:在同一个事务中,两次查询结果不一样(update)

虚读(幻读):在同一个事务中,两次查询结果不一样(insert)

 

隔离级别:

1)read uncommitted : 读取尚未提交的数据 :哪个问题都不能解决

2)read committed:读取已经提交的数据 :可以解决脏读 ---- oracle默认的

3)repeatable read:重读读取:可以解决脏读 和 不可重复读 ---mysql默认的

4)serializable:串行化:可以解决 脏读 不可重复读 和 虚读---相当于锁表

 

 

查看数据库的隔离级别:

    Select @@tx_isolation;

    Mysql 默认的隔离级别:repeatable-read;

    Oracle : read committed

 

  设置mysql的隔离级别:set session transaction isolation level 设置事务隔离级别


框架:我们可以简单的理解成为一个半成品 它提供了一套解决方案

框架的好处:
框架封装了细节,提高了开发效率,减轻了开发难度。

mybatis框架:
mybatis是一个持久层框架,用java语言编写的。
封装了jdbc。使开发者只需要注意sql语句本身,不用去纠结jdbc的其他细节
使用了ORM思想: 对象关系映射
O:Object
R:Relational
M:Mapping


mybatis环境搭建:
1、创建maven工程
2、创建实体类和UserDao接口
3、创建mybatis的核心配置文件
SqlMapConfig.xml
4、创建对象映射文件:
UserDao.xml
注意:UserDao.xml 需要和UserDao接口 名字一样 并且 路径一样

环境搭建注意点:
1、UserDao.xml 和 UserDao.java 名字和路径需要保持一致
2、映射配置文件的的mapper标签中的 namespace的属性取值必须是dao接口的全限定名
3、映射配置文件的操作配置(select) ,id属性的取值必须是dao接口中的方法名


自定义mybatis:

1、分析出需要的对象
class Resources
class SqlSessionFactoryBuilder
interface SqlSessionFactory
interface SqlSession

以上是关于事务,mybatis的主要内容,如果未能解决你的问题,请参考以下文章

片段事务中的实例化错误

BottomNavigationView 滞后于片段事务

Mybatis事务管理

浅谈jdbcTemplate与mybatis

Mybatis 事物回滚最简单的操作方式

mybatis中autoCommit自动提交事务