返回顶部
分享到

Nutz Dao与Spring集成介绍

java 来源:互联网 作者:佚名 发布时间:2026-02-22 09:19:58 人浏览
摘要

一、集成方式 1、采用Spring的IOC,但是事务还是采用Nutz自己管理控制; 2、采用Spring的声明式事务管理控制; 二、IOC 直接依据数据源注入即可 1 2 3 4 @Bean public NutDao nutz(DataSource dataSource) { retu

一、集成方式

1、采用Spring的IOC,但是事务还是采用Nutz自己管理控制;

2、采用Spring的声明式事务管理控制;

二、IOC

直接依据数据源注入即可

1

2

3

4

@Bean

public NutDao nutz(DataSource dataSource) {

    return new NutDao (dataSource);;

}

此时Nutz Dao的事务并不能通过Spring的事务来管理(如@Transactional注解、手动事务等),还是通过Nutz本身的 Trans.exec(() -> {}) 进行管理

例:

1

2

3

4

5

6

public void testService() {

    Trans.exec(() -> {

        dao.insert("test_table", Chain.make("id", 3));

        throw new RuntimeException("test exception");

    });

}

三、将事务交给Spring管理

step1:继承NutDao类,重写run方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

public class SpringNutDao extends NutDao {

    public SpringNutDao(DataSource dataSource) {

        super(dataSource);

    }

 

    @Override

    public void run(ConnCallback callback) {

        Connection con = DataSourceUtils.getConnection(getDataSource());

        try {

            callback.invoke(con);

        } catch (Exception e) {

            if (e instanceof RuntimeException) {

                throw (RuntimeException) e;

            } else {

                throw new RuntimeException(e);

            }

        } finally {

            DataSourceUtils.releaseConnection(con, getDataSource());

        }

    }

}

step2:将继承类注入

1

2

3

4

@Bean

public NutDao nutz(DataSource dataSource) {

    return new SpringNutDao(dataSource);

}

step3:将数据源事务管理注入

1

2

3

4

@Bean

public DataSourceTransactionManager  transactionManager(DataSource dataSource) {

    return new DataSourceTransactionManager(dataSource);

}

例1:

1

2

3

4

5

@Transactional

public void testService() {

    dao.insert("test_table", Chain.make("id", 3));

    throw new RuntimeException("test exception");

}

例2:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

@Autowired

private PlatformTransactionManager transactionManager;

 

public void testService() {

    DefaultTransactionDefinition def = new DefaultTransactionDefinition();

    TransactionStatus transactionStatus = transactionManager.getTransaction(def);

    try{

        dao.insert("test_table", Chain.make("id", 3));

        throw new RuntimeException("test exception");

    }catch (Exception e){

        if (transactionStatus.isCompleted()) {

            System.out.println("事务已完成,无需回滚");

        }else {

            transactionManager.rollback(transactionStatus);

        }

    }

 

}


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Nutz Dao与Spring集成介绍
    一、集成方式 1、采用Spring的IOC,但是事务还是采用Nutz自己管理控制; 2、采用Spring的声明式事务管理控制; 二、IOC 直接依据数据源注入即
  • 彻底卸载、更换jdk全过程

    彻底卸载、更换jdk全过程
    步骤一、卸载原来的jdk,删除JDK文件夹 刚开始忘放了,这里应该是jdk11 找到你jdk的目录,直接删除文件夹。 步骤二、删除注册表 打开注册
  • SpringBoot注解实现网络限速

    SpringBoot注解实现网络限速
    本文介绍在 Spring Boot 3 中实现多维度网络带宽限速的完整方案。基于令牌桶算法手动实现核心逻辑,通过自定义HandlerInterceptor拦截请求、H
  • SpringBoot利用JSONPath实现高效处理JSON数据
    在日常的后端开发工作中,我们经常需要和 JSON 数据打交道,尤其是要从层级复杂的 JSON 结构里精准提取特定字段。 传统的处理方式,比如
  • Java Stream实现精准数据分组与比例计算方法

    Java Stream实现精准数据分组与比例计算方法
    在当今数据驱动的软件开发时代,数据的快速处理与分析能力是提升应用性能和用户体验的关键。Java 8 引入的 Stream API 为开发者提供了一种
  • Java中ThreadLocal变量存储类的原理,使用场景及内
    ThreadLocal是 Java 中提供的一个线程本地变量存储类。它让每个线程都能拥有自己独立的变量副本,实现了线程间的数据隔离。本文讲述Threa
  • Java环境搭建Selenium代码自动化测试框架

    Java环境搭建Selenium代码自动化测试框架
    1. 什么是自动化测试? 自动化测试就是将人工测试变为让代码进行测试,可提高效率。自动化分类有:单元测试、接口测试、UI自动化测试
  • Java如何实现将PowerPoint转换为HTML
    在日常开发和业务场景中,我们经常会遇到将PowerPoint(PPT)演示文稿转换为HTML的需求。无论是为了在网页上无缝展示幻灯片内容,实现跨平
  • Java对接乐橙摄像头的步骤(绑定设备/直播/控制
    接入前准备 开发前需要去官网注册,获取开发需要的appId 和 appSecret 乐橙官网 乐橙开发文档 开始接入 话不多说,直接上代码。按照这个流
  • WebSocket(java版)服务核心代码

    WebSocket(java版)服务核心代码
    这是一个使用 Java JDK 8 和 Spring Boot 实现的WebSocket演示项目。目的是为解决多端消息通讯的问题。 WebSocket 是一种基于 TCP 的全双工通信协议,
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计