Nano Framework之启用多数据源支持并添加多数据源事务处理
2015-10-19 17:21
357 查看
本文基于前几篇文章为基础进行编写,需要了解前篇内容的浏览我的博客中的其他文章
今天的主题是使用Nano Framework开发多数据源及多数据源事务处理的示例
[size=large]1、修改配置并添加新的数据源配置[/size]
[size=medium]1.1、修改context.properties[/size]
[size=medium]1.2、添加examples2-jdbc.properties[/size]
[size=large]2、新建数据库及表结构[/size]
[size=medium]2.1、启动服务并访问 http://ip:port/first-webapp/console,使用以下信息登录[/size]
[list]
[*]URL: jdbc:h2:~/test2
[*]用户名: test
[*]密码: test
[/list]
[size=medium]2.2、建表[/size]
[size=large]3、添加多数据源操作代码[/size]
[size=medium]3.1、修改JdbcExamplesDao及JdbcExamplesDaoImpl,添加delete方法[/size]
[size=medium]3.2、增加JdbcExamplesMoveDao及JdbcExamplesMoveDaoImpl[/size]
[size=medium]3.3、添加Component实现,修改JdbcExamplesComponent及JdbcExamplesComponentImpl[/size]
[size=large]4、启动服务后进行以下操作[/size]
[list]
[*]http://ip:port/first-webapp/jdbc/persist/move/1
[*]http://ip:port/first-webapp/console并登陆test2库查询迁移数据
[/list]
[size=large]5、至此,多数据源及多数据源事务的示例就开发完了[/size]
今天的主题是使用Nano Framework开发多数据源及多数据源事务处理的示例
[size=large]1、修改配置并添加新的数据源配置[/size]
[size=medium]1.1、修改context.properties[/size]
# 将属性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
[size=medium]1.2、添加examples2-jdbc.properties[/size]
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
# 省略连接池的属性配置
[size=large]2、新建数据库及表结构[/size]
[size=medium]2.1、启动服务并访问 http://ip:port/first-webapp/console,使用以下信息登录[/size]
[list]
[*]URL: jdbc:h2:~/test2
[*]用户名: test
[*]密码: test
[/list]
[size=medium]2.2、建表[/size]
create table t_nano_test (
id int primary key,
name varchar(255)
)
[size=large]3、添加多数据源操作代码[/size]
[size=medium]3.1、修改JdbcExamplesDao及JdbcExamplesDaoImpl,添加delete方法[/size]
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);
}});
}
[size=medium]3.2、增加JdbcExamplesMoveDao及JdbcExamplesMoveDaoImpl[/size]
@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);
}
}
[size=medium]3.3、添加Component实现,修改JdbcExamplesComponent及JdbcExamplesComponentImpl[/size]
@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");
}
[size=large]4、启动服务后进行以下操作[/size]
[list]
[*]http://ip:port/first-webapp/jdbc/persist/move/1
[*]http://ip:port/first-webapp/console并登陆test2库查询迁移数据
[/list]
[size=large]5、至此,多数据源及多数据源事务的示例就开发完了[/size]
相关文章推荐
- 关于c#.Net操作Access数据库的类,支持事务处理
- JEECG Framework 3.5.0 GA 新版本终于发布了,重量级功能(数据权限,国际化,多数据源),团队会努力推出新版本,希望大家多多支持!!
- 百度地图 v3.5 根据数据源添加很多覆盖物和监听这些覆盖物,处理覆盖物重叠,点击添加覆盖物
- nginx添加第三方模块,以及启用nginx本身支持的模块
- 为ContentProvider添加数据库事务支持
- 数据库分库分表(sharding)系列(四) 多数据源的事务处理
- cglib实现jfinal service上添加事务 多数据源切换改进
- 添加网卡驱动和USB支持 以及一些问题的集中处理
- Linq EF 添加数据执行事务处理
- 为ContentProvider添加数据库事务支持
- 详解基于spring多数据源动态调用及其事务处理
- 一个VB.NET写的简单图片缩放处理组件源代码,支持添加半透明效果小图标
- SpringBoot整合Mybatis,多数据源,事务,支持java -jar 启动.
- MySQL不支持事务处理的解决方法
- 数据库分库分表(sharding)系列(四) 多数据源的事务处理
- 数据库分库分表(sharding)系列(四) 多数据源的事务处理
- Android小技巧(二):为ContentProvider添加数据库事务支持
- ASP中对数据库表的操作,可使用事务处理,并支持多事务处理
- [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction
- 数据库分库分表(sharding)系列(四) 多数据源的事务处理