Spring整合mybatis事务管理
1.mybatis独立管理事务
通过xml配置文件来配置事务
2.mybatis框架初始化:
(1)对加载读取xml配置文件的过程,
(2)mybatis初始化就是创建configuration对象过程,
(3)使用Configuration对象创建SqlSessionFactory
(4)使用MyBatis
只有执行sqlsession.commit()方法才会执行事务,否则在未提交之前都会进行事务回滚:
如果不执行sqlSession.commit()操作,直接执行sqlSession.close(),则会在close()中进行事务回滚;
如果不执行sqlSession.commit()操作也不手动关闭sqlSession,在程序结束时关闭数据库连接时会进行事务回滚;
3.创建项目Spring Initializer
4.添加pom.xml文件
5.加入Spring-MyBatis主配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.3.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.3.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-4.3.xsd"
><context:component-scan base-package="com.hxci.*"/><context:property-placeholder location="classpath:database.properties"/><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close" scope="singleton"><property name="driverClassName" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${user}" /><property name="password" value="${password}" /><property name="initialSize" value="${initialSize}"/><property name="maxActive" value="${maxActive}"/><property name="maxIdle" value="${maxIdle}"/><property name="minIdle" value="${minIdle}"/><property name="maxWait" value="${maxWait}"/><property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}"/><property name="removeAbandoned" value="${removeAbandoned}"/></bean><!--配置sqlSessionFactory--><bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!--<property name="configLocation" value="classpath:mybatis-config.xml"/>--><property name="typeAliasesPackage" value="com.hxci.**.pojo" ></property><property name="mapperLocations" value="classpath:mapper/*.xml"></property></bean><!--扫描映射文件(mapper动态代理)--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.hxci.**.dao"/></bean><!-- 配置事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!-- 开启注解 --><mvc:annotation-driven/><!--transaction-manager="transactionManager"一定要加上,否则会报错,该配置是以事物的方式开启注解--><tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
6.数据库配置文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=utf-8
user=root
password=x5
minIdle=45
maxIdle=50
initialSize=5
maxActive=100
maxWait=100
removeAbandonedTimeout=180
removeAbandoned=true
7.创建实体pojo类并为其添加get set和to string方法
public class Student {private Integer id;private String username;private String clazz;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getClazz() {return clazz;}public void setClazz(String clazz) {this.clazz = clazz;}@Overridepublic String toString() {return "Student{" +"id=" + id +", username='" + username + '\'' +", clazz='" + clazz + '\'' +'}';}
}
8.写controller控制层
@Controller
public class StudentController {@AutowiredStudentService service;public String query(int i){List<Student> list = service.query();System.out.println(list);return null;}public String add(Student student){service.add(student);return null;}public String update(Student student){service.update(student);return null;}public Student queryById(Integer id){Student student = service.queryById(id);System.out.println(student);return student;}public void delete(Integer id){service.delete(id);}
}
9.业务逻辑接口service
public interface StudentService {public List<Student> query();void add(Student student);void update(Student student);Student queryById(Integer id);void delete(Integer id);
}
10.实现类impl
@Service
public class StudentServiceImpl implements StudentService{@AutowiredStudentDao dao;@Overridepublic List<Student> query(){List<Student> list= dao.query();return list;}@Overridepublic void add (Student student){dao.add(student);}@Overridepublic void update(Student student){dao.update(student);}@Overridepublic Student queryById(Integer id){Student Byid = dao.queryById(id);return Byid;}@Overridepublic void delete(Integer id){dao.delete(id);}
}
11.数据持久dao层
public interface StudentDao {public List<Student> query();void add(Student student);public void update(Student student);public Student queryById(Integer id);public void delete(Integer id);
}
12.测试类
public class TestDemo2 {public static void main(String[] args) {ApplicationContext context =new ClassPathXmlApplicationContext("classpath:spring-mybatis.xml");for (String beanName : context.getBeanDefinitionNames()) {System.out.println(beanName + ":" + context.getBean(beanName));}StudentController controller = (StudentController)context.getBean("studentController");Student student = new Student();student.setUsername("大白");student.setClazz("234414");/*controller.add(student);*/student.setId(1);student.setUsername("你好");student.setClazz("21");/*controller.update(student);*//*Student student1 = controller.queryById(2);*//*controller.delete(2);*/controller.query(1);
Spring整合mybatis事务管理相关推荐
- 避坑spring整合mybatis事务不生效问题
作者最近在用spring整合mybatis的时候碰到一个问题就是开启声明式事务之后发现事务不生效,出现异常之后不回滚,在网上查阅很多资料后都没有成功解决.最后仔细检查代码之后发现SqlSessionF ...
- springboot整合mybatis 事务管理
1.创建项目 写项目名字和项目地址 2.修改maven地址 3.添加pom文件 <?xml version="1.0" encoding="UTF-8"? ...
- Spring(四)——AOP、Spring实现AOP、Spring整合Mybatis、Spring中的事务管理
文章目录 1. 什么是AOP 2. 使用Spring实现AOP 2.1 使用Spring的API 接口实现 2.2 自定义实现 2.3 使用注解实现 3. 整合MyBatis 3.1 MyBatis- ...
- Spring 整合 Mybatis - 二(切面、事务管理)
紧接着上篇<Spring 整合 Mybatis - 一(基础)>,介绍Spring 整合 Mybatis的切面.事务管理. 1 增加切面aop功能 1.1 spring.xml sprin ...
- spring,mybatis事务管理配置与@Transactional注解使用[转]
spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述 事务管理对于企业应用来说是至 ...
- spring,mybatis事务管理配置与@Transactional注解使用
spring,mybatis事务管理配置与@Transactional注解使用 概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性. Spring Framewor ...
- spring整合mybatis基于注解
数据库 /* Navicat MySQL Data Transfer Source Server : mysql Source Server Version : 50549 Sourc ...
- spring整合mybatis基于xml配置
数据库 /* Navicat MySQL Data Transfer Source Server : mysql Source Server Version : 50549 Sourc ...
- Spring整合mybatis中的sqlSession是如何做到线程隔离的?
转载自 Spring整合mybatis中的sqlSession是如何做到线程隔离的? 项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按 ...
- spring声明式事务管理方式( 基于tx和aop名字空间的xml配置+@Transactional注解)
1. 声明式事务管理分类 声明式事务管理也有两种常用的方式, 一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解. 显然基于注解的方式更简单易用,更清爽. ...
最新文章
- 【组队学习】一月微信图文索引
- 博科VP:闪存推动了与之相匹配的第六代FC的发展
- 19-7-15学习笔记
- 使用screen后台运行python(基于centOS7.2)
- 基于SpringBoot项目的https
- SQL Alias(别名)
- Python——列表生成式变形
- ES组件elasticsearch-head报错 npm ERR! Please include the following file with any support request
- JavaScript——this与箭头函数
- RIPng原理与实验
- 飞桨2.0 PaddleDetection:瓶装酒瑕疵检测迁移学习教程
- 5G关键技术之D2D
- python连连看小游戏_python之自动化连连看脚本-第一关不动-小记
- ubuntu 18.04 两张GPU显卡,nvidia-smi只显示一张
- SQL Server 开窗函数Over的使用(计算结存金额)
- F27.U盘-做过重装系统启动盘后内存变小方法解决方法-cmd格式化U盘
- OpenWrt之DNS 测试工具(nslookup、dig)
- 云计算导论第二章习题总结
- php开发h5游戏,H5的canvas实现贪吃蛇小游戏
- URL请求加密 参数的sign签名 与验签