本文基于前几篇文章为基础进行编写,需要了解前篇内容的浏览我的博客中的其他文章
今天的主题是使用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、至此,多数据源及多数据源事务的示例就开发完了
分享到:
相关推荐
可以并行运行多个神经网络对图像分类,目标检测,分割和语音处理等应用。 附件中是开发过程中收藏的开源芯片数据资料: Jetson_Nano_Carrier_Board_Design_Files_B01.zip Jetson_Nano_Dev_Kit_3D_b01.zip NV_Jetson...
艾肯4nano最新1.37版本 多通道 完美支持windows10系统
nano track aim mes nano track aim mes framwork
目录树莓派学习笔记 (二) 修改数据源 树莓派学习笔记 (二) 修改数据源 一般树莓派默认的源都是国外的,下载东西会非常的慢,所以我们需要修改数据源为国内的数据源 备份源文件,输入 sudo cp /etc/apt/sources....
新唐Nano100系列完整中文手册,以后就可以不用费劲看英文手册
这是一个用ARM9开发版开发的一个嵌入式linux图形界面系统(nano-X实现,即microwindows)-支持socket通讯,GPRS拨号通讯,Modem拨号通讯和串口通讯(已去掉此功能),支持usb设备。 公布源代码可以方便大家学习...
Arduino Nano 原理图
课程设计Arduino Nano单片机最小系统板源码。 板载资源 (1)改用Type-C接口,可作电源可串口通信 (2)使用CH340N USB转串口芯片,可自动下载和体积更小 (3)去除了串口通信LED指示灯 (4)去除了5V稳压电源...
Arduino的Nano v3.0,关于模块的介绍及原理图pdf、Arduino Nano是Arduino USB接口的微型版本,最大的不同是没有电源插座以及USB接口是Mini-B型插座。Arduino Nano是尺寸非常小的而且可以直接插在面包板上使用。其...
与基本的文本编辑相比,nano提供许多额外的特性,例如:交互式的查找和替换,定位到指定的行列,自动缩进,特性切换,国际化支持,以及文件名标记完成. nano是Unix和类Unix系统中的一个文本编辑器,是Pico的复制...
英伟达jetson NANO开发套件使用手册
nano板SD卡驱动下载
CubeMx+LL库下在 RT-Thread Nano 上添加控制台与 FinSH,LL库比较接近寄存器操作,现在ST官方都在大力推广HAL和LL库,个人觉得有必要学习和适应。
基于Arduino Nano的红外循迹小车+源代码+文档说明 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ...
FINS协议框架源码,C语言实现,支持与欧姆龙PLC通信
yolov5 6.0 版本 yolov5-nano 训练自己的数据集,已经包含自己的数据集,直接训练就能跑!可以参考更改。
Jetson板卡开发资料,视频教程,包括:Jetson Nano U盘做为系统盘.mp4,Jetson Nano - Use USB Drive.mp4,Jetson Nano 设置电源功耗模式.mp4,Jetson Nano 设置交换区文件增加内存.mp4,Jetson Nano 摄像头安装及...
Jetson_Nano开发板原理图
NANO8F_NANO9F_主板手册。适用于J1900CPU的无风扇主板。
Lichee_nano 原理图;荔枝派 Nano,开是一款仅有 2.54cm X 3.3cm 大小的精致小板,相当于一张 SD 卡大小,只要您愿意,即可将一颗极客芯随身携带。F1C100S低价杀手