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事务管理相关推荐

  1. 避坑spring整合mybatis事务不生效问题

    作者最近在用spring整合mybatis的时候碰到一个问题就是开启声明式事务之后发现事务不生效,出现异常之后不回滚,在网上查阅很多资料后都没有成功解决.最后仔细检查代码之后发现SqlSessionF ...

  2. springboot整合mybatis 事务管理

    1.创建项目 写项目名字和项目地址 2.修改maven地址 3.添加pom文件 <?xml version="1.0" encoding="UTF-8"? ...

  3. 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- ...

  4. Spring 整合 Mybatis - 二(切面、事务管理)

    紧接着上篇<Spring 整合 Mybatis - 一(基础)>,介绍Spring 整合 Mybatis的切面.事务管理. 1 增加切面aop功能 1.1 spring.xml sprin ...

  5. spring,mybatis事务管理配置与@Transactional注解使用[转]

    spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述 事务管理对于企业应用来说是至 ...

  6. spring,mybatis事务管理配置与@Transactional注解使用

    spring,mybatis事务管理配置与@Transactional注解使用 概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性. Spring Framewor ...

  7. spring整合mybatis基于注解

    数据库 /* Navicat MySQL Data Transfer Source Server         : mysql Source Server Version : 50549 Sourc ...

  8. spring整合mybatis基于xml配置

    数据库 /* Navicat MySQL Data Transfer Source Server         : mysql Source Server Version : 50549 Sourc ...

  9. Spring整合mybatis中的sqlSession是如何做到线程隔离的?

    转载自  Spring整合mybatis中的sqlSession是如何做到线程隔离的? 项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按 ...

  10. spring声明式事务管理方式( 基于tx和aop名字空间的xml配置+@Transactional注解)

    1. 声明式事务管理分类 声明式事务管理也有两种常用的方式, 一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解. 显然基于注解的方式更简单易用,更清爽. ...

最新文章

  1. 【组队学习】一月微信图文索引
  2. 博科VP:闪存推动了与之相匹配的第六代FC的发展
  3. 19-7-15学习笔记
  4. 使用screen后台运行python(基于centOS7.2)
  5. 基于SpringBoot项目的https
  6. SQL Alias(别名)
  7. Python——列表生成式变形
  8. ES组件elasticsearch-head报错 npm ERR! Please include the following file with any support request
  9. JavaScript——this与箭头函数
  10. RIPng原理与实验
  11. 飞桨2.0 PaddleDetection:瓶装酒瑕疵检测迁移学习教程
  12. 5G关键技术之D2D
  13. python连连看小游戏_python之自动化连连看脚本-第一关不动-小记
  14. ubuntu 18.04 两张GPU显卡,nvidia-smi只显示一张
  15. SQL Server 开窗函数Over的使用(计算结存金额)
  16. F27.U盘-做过重装系统启动盘后内存变小方法解决方法-cmd格式化U盘
  17. OpenWrt之DNS 测试工具(nslookup、dig)
  18. 云计算导论第二章习题总结
  19. php开发h5游戏,H5的canvas实现贪吃蛇小游戏
  20. URL请求加密 参数的sign签名 与验签

热门文章

  1. ISE14.7添加工程外部的IP核
  2. Python 3.7.1 模块 文本处理 正则表达式 re
  3. Hive读时模式和写时模式的区别是什么?
  4. 方差标准差,均方误差均方根误差,平均绝对误差
  5. 被王思聪抽奖炸了的微博,究竟是算法背锅还是自己作死?
  6. 乘幂法求主特征值和特征向量(C++)
  7. PHP的时间增加10分钟和加一天的时间
  8. 《三级医院评审标准(2020年版)》及解读:医疗机构要不断加强信息化建设
  9. 怎么彻底关闭wps热点 wps热点弹窗怎么永久关闭
  10. 记一次调试WM8978音频IC过程