事务,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的更多相关文章
- spring IOC DI AOP MVC 事务, mybatis 源码解读
demo https://gitee.com/easybao/aop.git spring DI运行时序 AbstractApplicationContext类的 refresh()方法 1: pre ...
- mybatis源码分析(8)-----事务(mybatis管理、spring管理)
写在前面 接口:MyBatis的事务Transaction的接口有一下实现类 JdbcTransaction 由jdbc管理的事务(即利用Connection对象完成对事务的提交(commit()). ...
- MyBatis架构(转)
本文来自http://www.bubuko.com/infodetail-549184.html 如果不太熟悉MyBatis使用的请先参见MyBatis官方文档,这对理解其架构设计和源码分析有很大好处 ...
- MyBatis架构设计及源代码分析系列(一):MyBatis架构
如果不太熟悉MyBatis使用的请先参见MyBatis官方文档,这对理解其架构设计和源码分析有很大好处. 一.概述 MyBatis并不是一个完整的ORM框架,其官方首页是这么介绍自己 The MyBa ...
- 使用maven整合spring+springmvc+mybatis
使用maven整合spring+springmvc+mybatis 开发环境: 1. jdk1.8 2. eclipse4.7.0 (Oxygen) 3. mysql 5.7 在pom.xml文件中, ...
- 深入理解Mybatis技术与原理
目录 第1章 Mybatis简介 1.1 传统的JDBC编程 1.2 ORM模型 1.4 MyBatis 1.5 什么时候用MyBatis 第2章 MyBatis入门 2.2 MyBatis构成 2. ...
- MyBatis实战之配置
MyBatis最重要的配置也就两个,一个是mybatis-config.xml,又称MyBatis的全局配置,另一个就是XXXDao.xml或XXXMapper.xml映射配置. mybatis-co ...
- java-mybaits-009-mybatis-spring-使用,SqlSessionFactoryBean、事务
一.版本限制 参看地址:http://www.mybatis.org/spring/ 二.使用入门 2.1.pom <dependency> <groupId>org.myba ...
- 2017.2.9 深入浅出MyBatis技术原理与实践-第八章 MyBatis-Spring(二)-----配置文件详解
深入浅出MyBatis技术原理与实践-第八章 MyBatis-Spring(二) ------配置文件详解 8.2 MyBatis-Spring应用 8.2.1 概述 本文主要讲述通过注解配置MyBa ...
- spring-第N篇整合SSM,即Mybatis+Spring+Spring MVC
1.Mybatis的配置使用 1>Jar包:mybatis-3.4.5.jar.mysql-connector-6.0.2或者ojdbc6-11.2.0.4.jar. 2>编写conf.x ...
随机推荐
- JAVA String中文乱码
System.out.println(str); String str1 = new String(str.getBytes("ISO-8859-1"), "utf-8& ...
- windows 中的类似于sudo的命令(在cmd中以另一个用户的身份运行命令)
linux中我们习惯用sudo命令来临时用另一个用户的身份执行命令. windows中,通常我们需要用管理员权限执行命令的时候通常是 右键->run as administrator. 用着键盘 ...
- [macOS] git忽略所有的.DS_Store文件
最彻底的方法如下: vi ~/.gitignore_global 输入以下内容 # OS generated files # ###################### .DS_Store .DS_ ...
- 跟我一起学python(2)
学习总结: 1.数据类型 a.数据:表示一种状态 b.python不存在字符类型 c.可变与不可变 d.x = 10 既 x = int(10) 2.字符编码 3.文件处理 详细: 数据类型: is ...
- 解决c# progressBar更新出现界面假死
最近一个项目需求中的一个功能是需要用progressBar反映处理文件的进度. 研究了Invoke和BeginInvoke方法. Control.Invoke 方法 (Delegate) :在拥有此控 ...
- webpack4 坑收集:html-webpack-plugin在多页面时,无法将optimization.splitChunks提取的公共块,打包到页面中
问题描述: 有2个页面index.html和product.html,用html-webpack-plugin和optimization.splitChunks的基本配置如下 { template: ...
- maven中target不能访问
原因是maven clean的时候已经把target文件夹删除 但是文件夹还存在页面中 所以我们看得到但是不能打开.正常操作是获得管理员权限删除后再重新clean,但是我电脑有360,直接360 ...
- 类与对象 && 继承
以下是本人的对类与对象.继承的一些理解,如有错误之处万望谅解,如有朋友愿意指正,十分乐意,万分感谢! 类与对象 类与对象是学习编程的基础(大概吧),那么何为类?何为对象呢? 一.简 ...
- 选择排序java实现
package text.algorithm; /** * 选择排序 * O(n^2);空间复杂度O(1); */public class SelectionSort { public static ...
- 基于ROS的人脸识别
#!/usr/bin/env python # -*- coding: utf-8 -*- import rospy import cv2 import numpy as np from sensor ...