首先感谢@JFinal赶在新年之前发布了给力的2.1版本,完美兼顾了Model和Bean
现在我想在Model层面实现对数据库的读写分离,以下是大概思路:
首先在Config中配置了两套数据源,分别面向读取和写入
然后创建了一个MyModel类,继承Model,重写了Model中的find/save/update/delete方法,其实只是在里面增加了一句:this.use(MyConfig.DB_Read_ConfigName) 或者 this.use(MyConfig.DB_Write_ConfigName)
这样的话,用法不变,只是将原来Model的父类由Model改成MyModel即可
为了适应2.1的Generator,我又创建了一个MyBaseModelGenerator类,继承BaseModelGenerator,主要是将其中生成BaseModel的父类从Model替换成了自定义的MyModel,这样的话就是全自动的啦
目前测试通过,而且在使用上和原来一样
只是不清楚频繁的使用use(configName)切换数据源的操作对效率影响大不大?
还有就是如何使Db也能实现读写分离,对于一些动态表的操作就更好了
最后。。。Happy New Year !!!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
频繁使用 use(configName) 没有任何性能问题,仅仅是为变量赋一个 string 值而已,完全可以忽略######@JFinal######我现在也使用,读用的是视图model,写操作使用的实体表,至于为什么用视图因为现有系统设计等相关才用的视图做的表连接显示实际内容。######
@JFinal 生成baseModel 表字段全大写,生成的javaBean 字段也是大写的,看着不习惯呢?是BUG么?
public void setTYPE(java.lang.String TYPE) {
set("TYPE", TYPE);
}
public java.lang.String getTYPE() {
return get("TYPE");
}
@JFinal 生成baseModel 表字段全大写,生成的javaBean 字段也是大写的,看着不习惯呢?是BUG么?
public void setTYPE(java.lang.String TYPE) {
set("TYPE", TYPE);
}
public java.lang.String getTYPE() {
return get("TYPE");
}
gernerator.setMetaBuilder(new MyMetaBuilder(ds));
public class MyMetaBuilder extends MetaBuilder {
public MyMetaBuilder(DataSource dataSource) {
super(dataSource);
}
protected String buildAttrName(String colName) {
return StrKit.toCamelCase(colName.toLowerCase());
}
} 这样生成出来的就是小写了