千家信息网

Spring框架中XML配置事务控制的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍Spring框架中XML配置事务控制的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、基于 XML 的声明式事务控制1.环境搭建拷贝必要的 jar 包
千家信息网最后更新 2026年11月02日Spring框架中XML配置事务控制的示例分析

这篇文章主要介绍Spring框架中XML配置事务控制的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、基于 XML 的声明式事务控制

1.环境搭建

拷贝必要的 jar 包到工程的 lib 目录

2.创建 spring 的配置文件并导入约束

这里直接给出本次测试的全部XML配置,具体细节在后面依次介绍。

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

3.准备数据库表和实体类

user数据库表

create database mybase2;USE mybase2;CREATE TABLE `user` (        `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '主键',        `name` VARCHAR(20) NOT NULL DEFAULT '0',        `age` INT(10) NOT NULL DEFAULT '0',        PRIMARY KEY (`id`))COLLATE='utf8_general_ci'ENGINE=InnoDB;INSERT INTO user values(NULL,'周冬雨',21);INSERT INTO user values(NULL,'马冬梅',18);INSERT INTO user values(NULL,'马西梅',19);

User实体类

package com.gql.entity;import java.io.Serializable;/** * 类说明: *         User实体类 * @guoqianliang1998. */public class User implements Serializable {        /**         * 生成序列号         */        private static final long serialVersionUID = -4492760954899814333L;        private int id;        private String name;        private int age;                public int getId() {                return id;        }        public void setId(int id) {                this.id = id;        }        public String getName() {                return name;        }        public void setName(String name) {                this.name = name;        }        public int getAge() {                return age;        }        public void setAge(int age) {                this.age = age;        }}

4.业务层接口与实现类

业务层接口

package com.gql.service;import java.util.List;import com.gql.entity.User;/** * 类说明: *         业务层接口 * @guoqianliang1998. */public interface UserService {        void save(User user);        void update(int id, User user);        void delete(int id);        User getUser(int id);        List getUserList(int[] ids);                List getUserList();}

业务层实现类

package com.gql.service;import java.util.List;import com.gql.dao.UserDao;import com.gql.entity.User;/** * 类说明: *         业务层实现类 * @guoqianliang1998. */public class UserServiceImp implements UserService {        private UserDao userDao;                public void setUserDao(UserDao userDao) {                this.userDao = userDao;        }        @Override        public void save(User user) {                userDao.save(user);                int i = 1/0;        }        @Override        public void update(int id, User user) {                userDao.update(id, user);        }        @Override        public void delete(int id) {                userDao.delete(id);        }        @Override        public User getUser(int id) {                User user = userDao.getUser(id);                return user;        }        @Override        public List getUserList(int[] ids) {                List userList = userDao.getUserList(ids);                return userList;        }        @Override        public List getUserList() {                List list = userDao.getUserList();                return list;        }}

5.数据访问层接口与实现类

数据访问层接口

package com.gql.dao;import java.util.List;import com.gql.entity.User;/** * 类说明:  *            数据访问层接口  * @guoqianliang1998. */public interface UserDao {        void save(User user);        void update(int id, User user);        void delete(int id);        User getUser(int id);        List getUserList(int[] ids);                List getUserList();    }

数据访问层实现类

package com.gql.dao;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.RowMapper;import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;import com.gql.RowMapper.UserRowMapper;import com.gql.entity.User;/** * 类说明:  *            数据访问层实现类  * @guoqianliang1998. */public class UserDaoImp implements UserDao {        private JdbcTemplate jdbcTemplate;        public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {                this.jdbcTemplate = jdbcTemplate;        }        @Override        public void save(User user) {                String sql = "INSERT INTO user values(NULL,?,?)";                jdbcTemplate.update(sql, user.getName(), user.getAge());        }        @Override        public void update(int id, User user) {                String sql = "update user set name=?,age=? WHERE id = ?";                jdbcTemplate.update(sql, user.getName(), user.getAge(), id);        }        @Override        public void delete(int id) {                String sql = "DELETE FROM user WHERE id = ?;";                jdbcTemplate.update(sql, id);        }        @Override        public User getUser(int id) {                String sql = "select * from user where id = ?";                User user = jdbcTemplate.queryForObject(sql, new RowMapper() {                        @Override                        public User mapRow(ResultSet rs, int rowNum) throws SQLException {                                User user = new User();                                user.setId(rs.getInt(1));                                user.setName(rs.getString(2));                                user.setAge(rs.getInt(3));                                return user;                        }                }, id);                return user;        }        @Override        public List getUserList(int[] ids) {                String sql = "select * from user where id in(:ids)";                                NamedParameterJdbcTemplate n = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());                Map paramMap = new HashMap();                List list = new ArrayList();                for (int i = 0; i < ids.length; i++) {                        list.add(ids[i]);                }                paramMap.put("ids", list);                List userList = n.query(sql, paramMap, new RowMapper(){                        @Override                        public User mapRow(ResultSet rs, int rowNum) throws SQLException {                                User user = new User();                                user.setId(rs.getInt(1));                                user.setName(rs.getString(2));                                user.setAge(rs.getInt(3));                                return user;                        }                });                return userList;                //              第二种写法↓↓↓//              StringBuilder sb = new StringBuilder();//              sb.append("SELECT * FROM user WHERE id = ?");//              for(int i=0;i userList = jdbcTemplate.query(sb.toString(),args,new RowMapper() {//                      //                      @Override//                      public Object mapRow(ResultSet rs, int rowNum) throws SQLException {//                              User user = new User();//                              user.setId(rs.getInt(1));//                              user.setName(rs.getString(2));//                              user.setAge(rs.getInt(3));//                              return user;//                      }       //              });//              return userList;        }        @Override        public List getUserList() {                String sql = "select * from user";                List list = jdbcTemplate.query(sql, new UserRowMapper());                return list;        }}

6.配置c3p0数据源/业务层/数据访问层

配置c3p0数据源

                                                                                                                                  

业务层

                                  

数据访问层

                                        

7.配置事务管理器

                                                   

8.配置事务的通知

事务的通知:

  • 配置事务的通知来引用事务管理器

  • 告诉Spring容器采用哪种事务管理机制.

  • 告诉Spring容器目标方法采用什么样的事务处理策略.

                                                                                                         

通知内配置事务的属性

属性说明
read-only是否是只读事务。默认 false,不只读。
isolation指定事务的隔离级别。默认值是使用数据库的默认隔离级别。
propagation指定事务的传播行为。
timeout指定超时时间。默认值为:-1。永不超时。
rollback-for用于指定一个异常,当执行产生该异常时,事务回滚。产生其他异常,事务不回滚。没有默认值,任何异常都回滚。
no-rollback-for用于指定一个异常,当产生该异常时,事务不回滚,产生其他异常时,事务回
滚。没有默认值,任何异常都回滚。

9.配置 AOP 切入点表达式

         

10.配置切入点表达式和事务通知的对应关系

         

以上是"Spring框架中XML配置事务控制的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

事务 配置 数据 业务 接口 控制 事务管理 实体 数据库 管理 框架 示例 分析 内容 切入点 容器 属性 数据源 篇文章 级别 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州百单互联网科技有限公司 互联网公司 科技公司 上海挚品互联网科技 互联网科技革命 互联网科技缩写 唐信互联网科技 大连 广州善班互联网科技 大白互联网科技 卓越科技互联网 招聘 广州慧亚互联网科技怎么样 佳云科技和互联网广告 花神(南京)互联网科技有限公司 本届互联网博览会上的黑科技 广州新华互联网科技学校电竞方面 互联网科技和法律行业 上海京穆互联网科技有限公司 山东子淼互联网科技有限公司 广东鹅鹅鹅互联网科技有限公司 杭州融税互联网科技有限公司 科技互联网专业务虚会材料 互联网巨头科技公司 朗新科技与工业互联网 成都互联网科技公司 安控科技rtu产品工业互联网 苏州铭阳互联网科技有限公司 晋城互联网科技 科技互联网的核心竞争力 锡山区互联网智能科技产品供应 银行科技岗属于互联网吗 西安左小互联网科技有限公司
0