JFinal可以使用Db+Record模式配置动态数据源,如果有多个数据源,就需要配置多个,需要修改工程代码。其实也是可以通过传递参数达到动态连接数据库,需要访问数据库才连接,达到按需连接。
使用Jfinal3版本,数据库使用mysql,加入相关依赖jar.
这里写图片描述
SysConfig为Jfinal配置在web.xml的总过滤器类。
package com.wlkj.config;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.template.Engine;
public class SysConfig extends JFinalConfig{
@Override
public void configConstant(Constants me) {
// TODO Auto-generated method stub
}
@Override
public void configPlugin(Plugins me) {
// TODO Auto-generated method stub
//之前是在这里配置动态数据源。。。。
}
@Override
public void configRoute(Routes me) {
me.add("/user", UserController.class);
}
@Override
public void configEngine(Engine me) {
// TODO Auto-generated method stub
}
@Override
public void configInterceptor(Interceptors me) {
// TODO Auto-generated method stub
}
@Override
public void configHandler(Handlers me) {
// TODO Auto-generated method stub
}
}
控制器类UserController
package com.wlkj.config;
import java.util.List;
import net.sf.json.JSONObject;
import com.jfinal.core.Controller;
import com.jfinal.kit.HttpKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.druid.DruidPlugin;
public class UserController extends Controller{
public void getUsers(){
String param = HttpKit.readData(getRequest());
JSONObject jo = JSONObject.fromObject(param);
String url = jo.getString("url");
String username = jo.getString("username");
String password = jo.getString("password");
DruidPlugin plugin = new DruidPlugin(url, username, password);
ActiveRecordPlugin arp= new ActiveRecordPlugin(plugin);
plugin.start();
arp.start();
List<Record> lists = Db.find("select * from users");
for(Record record : lists){
System.out.println(record);
}
arp.stop();
plugin.stop();
renderJson("{'success':'ok'}");
}
}
数据库准备,dydatasource1,dydatasource2,表结构都一样,表名users,只是表记录不一样。
这里写图片描述
测试类:
这里写图片描述
修改数据源,改成dydatasource2