`
comicme_yanghe
  • 浏览: 8617 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Nano Framework之启用多数据源支持并添加多数据源事务处理

    博客分类:
  • Java
阅读更多
本文基于前几篇文章为基础进行编写,需要了解前篇内容的浏览我的博客中的其他文章
今天的主题是使用Nano Framework开发多数据源及多数据源事务处理的示例

1、修改配置并添加新的数据源配置
1.1、修改context.properties
# 将属性mapper.package.jdbc=/examples-jdbc.properties修改为如下配置
mapper.package.root=examples,examples2
mapper.package.jdbc.examples=/examples-jdbc.properties
mapper.package.jdbc.examples2=/examples2-jdbc.properties


1.2、添加examples2-jdbc.properties
JDBC.environment.id=examples2

JDBC.pool.type=DRUID
JDBC.driver=org.h2.Driver
JDBC.url=jdbc:h2:~/test2
JDBC.username=test
JDBC.password=test
JDBC.autoCommit=false

# 省略连接池的属性配置


2、新建数据库及表结构
2.1、启动服务并访问 http://ip:port/first-webapp/console,使用以下信息登录
  • URL: jdbc:h2:~/test2
  • 用户名: test
  • 密码: test


2.2、建表
create table t_nano_test (
id int primary key,
name varchar(255)
)


3、添加多数据源操作代码
3.1、修改JdbcExamplesDao及JdbcExamplesDaoImpl,添加delete方法
long delete(int id) throws SQLException;

private final String deleteById = "DELETE FROM T_NANO_TEST WHERE ID = ? ";

@Override
public long delete(int id) throws SQLException {
    return get(DataSource.EXAMPLES.value()).executeUpdate(deleteById, new ArrayList<Object>() {
        private static final long serialVersionUID = 1L; { 
        add(id); 
    }});
}


3.2、增加JdbcExamplesMoveDao及JdbcExamplesMoveDaoImpl
@ImplementedBy(JdbcExamplesMoveDaoImpl.class)
public interface JdbcExamplesMoveDao { 
    long insert(Test test) throws SQLException;
}

public class JdbcExamplesMoveDaoImpl implements JdbcExamplesMoveDao {

    private final String insert = "INSERT INTO T_NANO_TEST(ID, NAME) VALUES (?, ?) ";

    @Override
    public long insert(Test test) throws SQLException {
        List<Object> values = new ArrayList<>();
        values.add(test.getId());
        values.add(test.getName());
        return get(DataSource.EXAMPLES2).executeUpdate(insert, values);
    }
}


3.3、添加Component实现,修改JdbcExamplesComponent及JdbcExamplesComponentImpl
@RequestMapping("/persist/move/{id}")
Object move(@PathVariable("id") Integer id);

@Inject
private JdbcExamplesMoveDao examplesMoveDao;

@JdbcTransactional(envId = {DataSource.EXAMPLES, DataSource.EXAMPLES2})
@Override
public Object move(Integer id) {
    try {
        Test test = examplsDao.select(id);
        if(test == null) {
            return ResultMap.create(200, "Not Found Data", "WARNING");
        } else {
            if(examplesMoveDao.insert(test) > 0) {
                examplsDao.delete(id);
            }
        }
    } catch(Exception e) {
        throw new ComponentInvokeException(e.getMessage(), e);
    }

    return ResultMap.create(200, "OK", "SUCCESS");
}


4、启动服务后进行以下操作
  • http://ip:port/first-webapp/jdbc/persist/move/1
  • http://ip:port/first-webapp/console并登陆test2库查询迁移数据


5、至此,多数据源及多数据源事务的示例就开发完了

0
1
分享到:
评论

相关推荐

    关于CentOS更新数据源

    这篇博客将深入探讨如何在CentOS系统中更新数据源,并提供关于`CentOS-Base.repo`文件的详细信息。 首先,`CentOS-Base.repo`是CentOS系统中的一个配置文件,位于`/etc/yum.repos.d/`目录下。这个文件定义了系统...

    Jetson nano 启用摄像头,以jetcam

    Jetson nano 启用摄像头,以jetcam

    艾肯4nano 1.37 支持win10

    艾肯4nano最新1.37版本 多通道 完美支持windows10系统

    Jetson Nano Developer Kit (B01)开源人工智能芯片数据手册

    可以并行运行多个神经网络对图像分类,目标检测,分割和语音处理等应用。 附件中是开发过程中收藏的开源芯片数据资料: Jetson_Nano_Carrier_Board_Design_Files_B01.zip Jetson_Nano_Dev_Kit_3D_b01.zip NV_Jetson...

    nano track aim mes

    在技术领域,"nano"常常指的是微小或纳米级的事物,暗示此框架可能具有高效、轻量级的特点,旨在处理高度精确和实时的数据。 "Track"在上下文中指的是追踪,这表明该系统能够实时跟踪生产流程中的物料、设备状态...

    Nano100中文手册.zip_Nano100中文手册_nano100sd38n_panl41_tang nano_手册

    5. **中断和异常处理**:解释了中断和异常处理机制,包括中断源、中断向量表和中断优先级管理,这对于实时系统尤为重要。 6. **开发工具和调试**:介绍了如何使用开发工具链,如编译器、链接器和调试器,进行应用...

    Jetson_Nano开发板原理图.7z

    2. LPDDR4内存:4GB的高速内存为AI计算和多任务处理提供了充足的空间,确保了数据传输速度。 三、GPU性能 1. Maxwell GPU:Jetson Nano的GPU具有256个CUDA核心,可以执行大量的并行计算任务,适合图像处理、机器...

    树莓派学习记录 更换数据源 安装wiringpi库

    【树莓派学习记录 更换数据源 安装wiringpi库】 树莓派是一款基于Linux系统的微型计算机,常用于教育、DIY项目和嵌入式应用。在使用树莓派时,为了获取更快的软件更新速度和更好的系统性能,更换数据源(也称为软件...

    CubeMx+LL库下在 RT-Thread Nano 上添加控制台与 FinSH

    在中断处理程序中,使用LL库的函数读取接收到的数据,并通过适当的机制(例如环形缓冲区)传递给用户应用程序。 至于FinSH,这是一个嵌入式系统的命令行接口,它允许开发者在运行时执行各种操作,如查看系统状态、...

    jetson nano 开发板官方教程

    由于Jetson Nano支持OpenCV和V4L2等库,可以处理图像和视频流,因此非常适合视觉应用。教程将展示如何进行摄像头设置,实现图像捕获和处理,以及如何构建人脸识别、目标检测等应用。 七、物联网(IoT)集成 作为一款...

    nano track

    在"nano track"的情况下,这个框架可能包括了处理传感器数据、解析定位信息、处理网络通信等功能模块。选择合适的框架可以提高开发效率,同时保证代码的可维护性和扩展性。 **可能的文件内容** 尽管没有提供具体的...

    树莓派学习笔记 (二) 修改数据源

    目录树莓派学习笔记 (二) 修改数据源 树莓派学习笔记 (二) 修改数据源 一般树莓派默认的源都是国外的,下载东西会非常的慢,所以我们需要修改数据源为国内的数据源 备份源文件,输入 sudo cp /etc/apt/sources....

    适用于jetson nano的anaconda

    标题中的“适用于jetson nano的anaconda”指的是在NVIDIA Jetson Nano开发板上使用的Anaconda,这是一个开源的Python数据科学平台,它提供了一个管理环境和预装了各种科学计算库的Python分发版本,方便用户进行数据...

    arduino nano uno 参考手册

    ### Arduino Nano Uno 参考手册知识点详述 #### 一、引言 Arduino Nano Uno 是一款基于 ATmega328P 微控制器的开源电子原型平台。它体积小巧且功能强大,非常适合各种嵌入式项目。该参考手册旨在为用户提供有关如何...

    Go-nanoserver演示如何使用nano进行四川麻将游戏服务器程序开发

    在实际开发中,`nanoserver-master`压缩包可能包含源代码、配置文件、示例和文档等资源,你可以根据这些资料进一步学习和理解如何将nanoserver应用到四川麻将游戏服务器的开发中。同时,不断优化和调整服务器架构,...

    FINS协议框架,FINS-Framework.zip

    4. **API接口**:FINS-Framework通常会提供一组API接口,如`fins_open()`用于建立连接,`fins_write()`用于写入数据,`fins_read()`用于读取数据,以及`fins_close()`用于关闭连接。理解并熟练使用这些接口是实现...

    nano低功耗

    如果外部IC电源关闭,与之相连的引脚均应切换为GPIO功能并输出0。 10. **检查漏电电路**:仔细检查电路板上所有接地部分,确保没有形成电源到地的通路。若必须形成通路,尽量增加电阻以减小漏电。 #### 四、NANO...

    GNU Nano 2.5.3 编辑器源码

    GNU Nano的特色在于其简洁的界面和易于上手的操作,它支持自动完成、拼写检查、多窗口编辑、搜索替换等功能。尽管不如Vim或Emacs那样高度可配置,但对初学者或需要快速编辑文本的用户来说,Nano是一个很好的选择。...

    从准备数据集到完成Jetson Nano深度学习模型部署,Jetson Nano和STM32通信控制舵机转动.zip

    该项目涉及了从数据集准备到在Jetson Nano上部署...以上是针对项目描述的关键知识点的详细解析,涵盖了数据处理、深度学习、嵌入式硬件和软件设计等多个方面。这些技术在物联网、智能设备和自动化领域有着广泛应用。

    jetson nano SD card镜像下载地址及详解~

    Jetson Nano是一款由NVIDIA推出的高性能嵌入式计算平台,主要应用于人工智能、机器学习和深度学习等领域的开发。为了在Jetson Nano上进行工作,你需要一个预装了适当操作系统的SD卡镜像。本篇文章将详细讲解如何下载...

Global site tag (gtag.js) - Google Analytics