NutzCN Logo
精华 基于nutzwk3.3x的多数据源配置
发布于 2725天前 作者 qq_8ae3e4c7 2105 次浏览 复制 上一个帖子 下一个帖子
标签: nutzwk

1、创建新数据库配置目录sdk
2、拷贝custom目录下的 db.properties到sdk目录
3、修改新的db.properties文件
4、拷贝dao.json,改名为dao1.json。同目录操作
5、修改,conf节点下的paths
conf : {
type : "org.nutz.ioc.impl.PropertiesProxy",
fields : {
paths : ["config/sdk/"]
}
}
6、修改dao为dao1
dao1 : {
type : "org.nutz.dao.impl.NutDao",
args : [{refer:"dataSource"}],
fields : {
executor : {refer:"cacheExecutor"}
}
},

7、使用dao1作为数据源
@IocBean
public class TestJob implements Job {

private static final Log log = Logs.get();
@Inject
protected Dao dao;

@Inject
protected Dao dao1;

public void execute(JobExecutionContext context) throws JobExecutionException {
    JobDataMap data = context.getJobDetail().getJobDataMap();
    String taskId = context.getJobDetail().getKey().getName();
    String hi = data.getString("hi");
    log.info("Test Job hi::" + hi);
    dao.update(Sys_task.class, Chain.make("exeAt", (int) (System.currentTimeMillis() / 1000)).add("exeResult", "执行成功"), Cnd.where("id", "=", taskId));
    List<Record> ls= dao1.query("config",null);
    System.out.println("config长度"+ls.size());

}

}

输出:
For example:> "UPDATE sys_task SET exeAt=1477983030 ,exeResult='执行成功' WHERE id='ef570cc2738f46a38c0c95166a881a74'"
2016-11-01 14:50:30,070 org.nutz.dao.impl.sql.run.NutDaoExecutor.printSQL(NutDaoExecutor.java:388) DEBUG - SELECT * FROM config
config长度53

5 回复

这样有2个conf了, 要改一下

老大,怎么改?

用不同的前置区分数据源配置信息就好了

        // 总的conf
		conf : {
			type : "org.nutz.ioc.impl.PropertiesProxy",
			fields : {
				paths : ["custom/"]
			}
		},
        // 第一个数据源, 使用db.开头的配置信息
	    dataSource : {
	        factory : "$conf#make",
	        args : ["com.alibaba.druid.pool.DruidDataSource", "db."],
	        type : "com.alibaba.druid.pool.DruidDataSource",
	        events : {
	        	create : "init",
	            depose : 'close'
	        }
	    },
        // 第二个数据源,使用db2.开头的配置信息
	    dataSource2 : {
	        factory : "$conf#make",
	        args : ["com.alibaba.druid.pool.DruidDataSource", "db2."],
	        type : "com.alibaba.druid.pool.DruidDataSource",
	        events : {
	        	create : "init",
	            depose : 'close'
	        }
	    },
        // 引用第一个数据源
		dao : {
			type : "org.nutz.dao.impl.NutDao",
			args : [{refer:"dataSource"}],
		},
        // 引用第二个数据源
		dao2 : {
			type : "org.nutz.dao.impl.NutDao",
			args : [{refer:"dataSource2"}],
		},

明白了。谢谢老大。。。。。

更新后的多数据源配置
db配置文件

#mysql
db.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
db.username=
db.password=
db.validationQuery=select 1
db.maxActive=100
db.testWhileIdle=true
db.filters=mergeStat
db.connectionProperties=druid.stat.slowSqlMillis=2000
db.defaultAutoCommit=true
############################
db1.url=jdbc:mysql://127.0.0.1:3306/test1?useUnicode=true&characterEncoding=utf8
db1.username=
db1.password=
db1.validationQuery=select 1
db1.maxActive=100
db1.testWhileIdle=true
db1.filters=mergeStat
db1.connectionProperties=druid.stat.slowSqlMillis=2000
db1.defaultAutoCommit=true

dao.js
var ioc = {
conf : {
type : "org.nutz.ioc.impl.PropertiesProxy",
fields : {
paths : ["config/custom/"]
}
},
dataSource : {
factory : "$conf#make",
args : ["com.alibaba.druid.pool.DruidDataSource", "db."],
type : "com.alibaba.druid.pool.DruidDataSource",
events : {
create : "init",
depose : 'close'
}
},
dao : {
type : "org.nutz.dao.impl.NutDao",
args : [{refer:"dataSource"}],
fields : {
executor : {refer:"cacheExecutor"}
}
},

    dataSource1 : {
    factory : "$conf#make",
    args : ["com.alibaba.druid.pool.DruidDataSource", "db1."],
    type : "com.alibaba.druid.pool.DruidDataSource",
    events : {
    create : "init",
    depose : 'close'
       }
    },

    dao1 : {
    type : "org.nutz.dao.impl.NutDao",
    args : [{refer:"dataSource1"}],
    fields : {
    executor : {refer:"cacheExecutor"}
       }
    },



    cacheExecutor : {
       type : "org.nutz.plugins.cache.dao.CachedNutDaoExecutor",
       fields : {
         cacheProvider : {refer:"cacheProvider"},
         cachedTableNames : ["sys_user", "sys_role", "sys_menu"]
       }
    },
    /*
    // 基于内存的简单LRU实现
    cacheProvider : {
       type : "org.nutz.plugins.cache.dao.impl.provider.MemoryDaoCacheProvider",
       fields : {
         cacheSize : 10000 // 缓存的对象数
       },
       events : {
         create : "init"
       }
    }
    */
    // 基于Ehcache的DaoCacheProvider
    cacheProvider : {
       type : "org.nutz.plugins.cache.dao.impl.provider.EhcacheDaoCacheProvider",
       fields : {
         cacheManager : {refer:"cacheManager"} // 引用ehcache.json中定义的CacheManager
       },
       events : {
         create : "init"
       }
    }

};

添加回复
请先登陆
回到顶部