文章目录

  • 基于注解方式的Spring事务配置
    • 1 创建表结构
    • 2 创建实体类
    • 3 创建Dao
    • 4 创建DaoImpl
    • 5 创建Service
    • 6 创建SrviceImpl
    • 7 创建TxConfig
    • 8 创建Test
  • 基于xml方式Spring事务配置
    • 1 创建表结构
    • 2 创建实体类
    • 3 创建Dao
    • 4 创建DaoImpl
    • 5 创建Service
    • 6 创建ServiceImpl
    • 7 beans.xml
    • 8 创建Test

基于注解方式的Spring事务配置

1 创建表结构

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for account
-- ----------------------------
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (`id` int NOT NULL,`name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,`money` int DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;-- ----------------------------
-- Records of account
-- ----------------------------
BEGIN;
INSERT INTO `account` VALUES (1, 'lucy', 1000);
INSERT INTO `account` VALUES (2, 'mary', 1000);
COMMIT;SET FOREIGN_KEY_CHECKS = 1;

2 创建实体类

package com.ccb.po;public class Account {private Integer id;private String name;private Integer money;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getMoney() {return money;}public void setMoney(Integer money) {this.money = money;}
}

3 创建Dao

package com.ccb.dao;public interface AccountDao {void addMoney();void minusMoney();
}

4 创建DaoImpl

package com.ccb.dao.impl;import com.ccb.dao.AccountDao;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;import javax.annotation.Resource;@Repository("accountDaoImpl")
public class AccountDaoImpl implements AccountDao {@Resourceprivate JdbcTemplate jdbcTemplate;@Overridepublic void addMoney() {String sql = "update account set money = money+? where name = ?";jdbcTemplate.update(sql,100,"mary");}@Overridepublic void minusMoney() {String sql = "update account set money = money-? where name = ?";jdbcTemplate.update(sql,100,"lucy");}
}

5 创建Service

package com.ccb.service;public interface AccountService {void accountMoney();void addMoney();void minusMoney();
}

6 创建SrviceImpl

package com.ccb.service.impl;import com.ccb.dao.UserDao;
import com.ccb.po.User;
import com.ccb.service.UserService;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;@Service
public class UserServiceImpl implements UserService {@Resourceprivate UserDao userDao;@Overridepublic void addUser(User user) {userDao.addUser(user);}@Overridepublic void updateUser(User user) {userDao.updateUser(user);}@Overridepublic void deleteUser(User user) {userDao.deleteUser(user);}@Overridepublic User getUser(User user) {return userDao.getUser(user);}@Overridepublic List<User> getListUser() {return userDao.getListUser();}@Overridepublic void batchAddUser(List<Object[]> objects) {userDao.batchAddUser(objects);}@Overridepublic void batchUpdateUser(List<Object[]> objects) {userDao.batchUpdate(objects);}@Overridepublic void batchDeleteUser(List<Object[]> objects) {userDao.batchDeleteUser(objects);}
}

7 创建TxConfig

package com.ccb.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;@ComponentScan(basePackages = "com.ccb")    //开启组件扫描
@Configuration  //配置类
@EnableTransactionManagement    //开启事务
public class TxConfig {//创建数据库连接池@Beanpublic DruidDataSource getDruidDataSource(){DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");dataSource.setUrl("jdbc:mysql://192.168.1.4:3306/db_user");dataSource.setUsername("root");dataSource.setPassword("root");return dataSource;}//创建JdbcTemplate@Beanpublic JdbcTemplate getJdbcTemplate(DataSource dataSource){//到ioc容器中根据类型找到DataSourceJdbcTemplate jdbcTemplate = new JdbcTemplate();//注入dataSourcejdbcTemplate.setDataSource(dataSource);return jdbcTemplate;}//创建事务管理器@Beanpublic DataSourceTransactionManager getDataSourceTransactionManager(DataSource dataSource){DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(dataSource);transactionManager.setDataSource(dataSource);return transactionManager;}
}

8 创建Test

package com.ccb.user;import com.ccb.config.TxConfig;
import com.ccb.po.User;
import com.ccb.service.AccountService;
import com.ccb.service.UserService;
import com.ccb.service.impl.AccountServiceImpl;
import com.ccb.service.impl.UserServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.ArrayList;
import java.util.List;public class UserTest {@Testpublic void testTxConfig(){ApplicationContext  applicationContext = new AnnotationConfigApplicationContext(TxConfig.class);AccountService accountService = applicationContext.getBean("accountServiceImpl", AccountService.class);accountService.accountMoney();}
}

基于xml方式Spring事务配置

1 创建表结构

同上注解方式

2 创建实体类

同上注解方式

3 创建Dao

同上注解方式

4 创建DaoImpl

同上注解方式

5 创建Service

同上注解方式

6 创建ServiceImpl

同上注解方式

7 beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><context:component-scan base-package="com.ccb"></context:component-scan><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property><property name="url" value="jdbc:mysql://192.168.1.4:3306/db_user"></property><property name="username" value="root"></property><property name="password" value="root"></property></bean><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!--开启事务注解--><tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
</beans>

8 创建Test

package com.ccb.user;import com.ccb.config.TxConfig;
import com.ccb.po.User;
import com.ccb.service.AccountService;
import com.ccb.service.UserService;
import com.ccb.service.impl.AccountServiceImpl;
import com.ccb.service.impl.UserServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.ArrayList;
import java.util.List;public class UserTest {@Testpublic void testTx(){ApplicationContext  applicationContext = new ClassPathXmlApplicationContext("beans.xml");AccountService accountService = applicationContext.getBean("accountServiceImpl", AccountService.class);accountService.accountMoney();}
}

文章目录

  • 基于注解方式的Spring事务配置
    • 1 创建表结构
    • 2 创建实体类
    • 3 创建Dao
    • 4 创建DaoImpl
    • 5 创建Service
    • 6 创建SrviceImpl
    • 7 创建TxConfig
    • 8 创建Test
  • 基于xml方式Spring事务配置
    • 1 创建表结构
    • 2 创建实体类
    • 3 创建Dao
    • 4 创建DaoImpl
    • 5 创建Service
    • 6 创建ServiceImpl
    • 7 beans.xml
    • 8 创建Test

Spring 事务基于注解和xml方式相关推荐

  1. spring 组件基于注解的注册方式

    spring 中常用的组件标签有: @Controller:控制层 @Service:业务层 @Repository:数据层 @Component:普通的pojo注入到spring容器 组件注册方式: ...

  2. Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别、不可重复读与幻读的区别

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spr ...

  3. Spring事务及其注解

    Spring事务及其注解目录页 Spring事务相关 Spring事务的本质 Spring和事务的关系 Spring事务三要素 Spring事务的注解配置 事务注解的本质 Spring事务的表达方式 ...

  4. Spring IoC — 基于注解的配置

    基于XML的配置,Bean定义信息和Bean实现类本身是分离的,而采用基于注解的配置方式时,Bean定义信息即通过在Bean实现类上标注注解实现. @Component:对类进行标注,Spring容器 ...

  5. Spring事务配置的五种方式 说明

    Spring事务配置的五种方式  [转 http://blog.csdn.net/hjm4702192/article/details/17277669] Spring配置文件中关于事务配置总是由三个 ...

  6. Spring事务常用注解

    文章目录 Spring事务常用注解 1. @EnableTransactionMannagement 1.1 作用 1.2 属性分析 2. @Transactional 2.1 作用 2.2 属性分析 ...

  7. spring中的注解和xml配置文件中配置对应总结

    spring中的注解和xml配置文件中配置对应 需要导入的jar spring-context spring-context-support spring-test commons-logging b ...

  8. java @around,Spring AOP基于注解的Around通知

    是一种建议类型,可确保方法执行前后的通知可以运行. 以下是通知的语法: 语法 @Pointcut("execution(* com.yiibai.Student.getAge(..))&qu ...

  9. Spring定时任务@Scheduled注解使用配置方式(cron表达式、fixedRate和fixedDelay)

    Spring定时任务@Scheduled注解使用配置方式(cron表达式.fixedRate和fixedDelay) 序言: 个人推荐一个很方便的在线Cron生成器(网页版):https://qqe2 ...

最新文章

  1. Resize Datafile时ORA-03297: 文件包含在请求的 RESIZE 值以外使用的数据
  2. 某数加密的流程与原理简析
  3. 一篇论文未发博士毕业,中科院最年轻院士入职浙大
  4. [linux-svn] linux下svn常用指令
  5. IIS上配置运行cgi,php,aspx运行环境
  6. javax.crypto.BadPaddingException: Given final block not properly padded 解决方法
  7. jq实现文字个数限制_限制字符输入数功能(jquery版和原生JS版)
  8. c语言语法分析常见问题,C语言语法提要与常见错误分析.doc
  9. html点击按钮出现弹窗_电脑总是弹出乱七八糟的广告?跟我学,让你从此告别弹窗广告...
  10. 金融行业基于 DELL EMC 高端存储的核心系统实践经验分享
  11. 企业网络安全建设必须要知道的终端产品
  12. https请求调用工具类
  13. Tensorflow 2.0 视频分类(四) C3D 3D convolutional Networks
  14. 第十六届全国大学生智能车竞赛(安徽赛区)信标组蒟蒻的想法
  15. LPC1778/1788的初步开发问题
  16. 一个Java程序员的一生(悲惨版)
  17. 荣耀N30可以升级鸿蒙,良心点评爱科技n30和n40区别有吗?评价哪个好?深度测评剖析...
  18. Android11开机启动禁止,Android11新限制:用户只能使用默认相机应用
  19. android 报错处理
  20. TL-SSD: Detecting Traffic Lights by Single Shot Detection 论文复现

热门文章

  1. git 获取远程分支到本地_如何将git本地仓库上传到远程仓库?
  2. centos8 改主题颜色 黑色改白色
  3. python sql解析引擎_python SQLAlchemy 中的Engine详解
  4. python工资津贴的计算和排序-python sort、sorted高级排序技巧
  5. valorant皮肤怎么获得_王者荣耀狂铁特工战影上线时间 狂铁新皮肤特工战影怎么获得...
  6. led控制器java_TM1668 Led 驱动芯片源程序
  7. string 中的offset_Kafka+Spark Streaming管理offset的几种方法
  8. hashmap原理_想要彻底搞懂HashMap?你得恶补下HashMap原理
  9. python包管理_Python包管理整理:setuptoo
  10. optparse接受带空格的参数值时,需要加双引号