@JFinal 你好,想跟你请教个问题:
可以使用 sharding-jdbc :http://www.oschina.net/news/71243/sharding-jdbc-1-0-1 分库分表非常不错,我已经试过了,博客待写,可能需要修改2行JFinal源码或者自己重写model和db的save, 因为他还不支持getGeneratedKeys,@JFinal 是否可以考虑加个参数控制这个getGeneratedKeys,分库了之后主键一般是先生成好的。
让 getGenereatedKeys() 自行生成主键? 不依赖于数据库?
回复getGenereatedKeys()主要是获取已经生成的主键,大部分分库的都是实现将主键生成好的,就是主键已知了,不过感觉得好好考虑下,不知道mybatis那种SELECT LAST_INSERT_ID()支持不,这个没测试过。
回复getGeneratedKeys() 就是获取已生成的主键的,难道不是一个意思?
那如果查询呢?怎么发SQL语句? 我试了一下 Model m = Model.me.use(“otherDb”); List list=m.find("sql"); 这样报空指针异常。
回复报错前两句是这样的:at com.jfinal.plugin.activerecord.Model.find(Model.java:529) at com.jfinal.plugin.activerecord.Model.find(Model.java:546)
回复me是全局共享的,不建议使用它的 use 方法,否则其它地方使用的时候仍然保持着上次使用的configName,建议使用新创建出来的model使用use方法,例如 new User().use(...),也可以是从数据库刚刚查询出来的model使用use,总之注意一下线程安全问题
回复谢谢您,我是把me.find(sql)改成Db.find(sql)解决的。
在映射方面,一个 Model 只能映射到一个数据源,也即:一个 Model 只能调用一次 arp.addMapping(...) 来映射。但可以使用 Model.use(configName) 这个方法临时切换到其它数据源,极度好使用,你可以试试,这样用:
User.dao.findById(123).use(otherDs).save();
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(10)
引用来自“如梦技术”的评论
可以使用 sharding-jdbc :
http://www.oschina.net/news/71243/sharding-jdbc-1-0-1 分库分表非常不错,我已经试过了,博客待写,可能需要修改2行JFinal源码或者自己重写model和db的save, 因为他还不支持
getGeneratedKeys,@JFinal 是否可以考虑加个参数控制这个getGeneratedKeys,分库了之后主键一般是先生成好的。
让 getGenereatedKeys() 自行生成主键? 不依赖于数据库?
回复
getGenereatedKeys()主要是获取已经生成的主键,大部分分库的都是实现将主键生成好的,就是主键已知了,不过感觉得好好考虑下,不知道mybatis那种SELECT LAST_INSERT_ID()支持不,这个没测试过。
回复
getGeneratedKeys() 就是获取已生成的主键的,难道不是一个意思?
可以使用 sharding-jdbc :
http://www.oschina.net/news/71243/sharding-jdbc-1-0-1 分库分表非常不错,我已经试过了,博客待写,可能需要修改2行JFinal源码或者自己重写model和db的save, 因为他还不支持
getGeneratedKeys,@JFinal 是否可以考虑加个参数控制这个getGeneratedKeys,分库了之后主键一般是先生成好的。
那如果查询呢?怎么发SQL语句? 我试了一下 Model m = Model.me.use(“otherDb”); List list=m.find("sql"); 这样报空指针异常。
回复
报错前两句是这样的:at com.jfinal.plugin.activerecord.Model.find(Model.java:529) at com.jfinal.plugin.activerecord.Model.find(Model.java:546)
回复
me是全局共享的,不建议使用它的 use 方法,否则其它地方使用的时候仍然保持着上次使用的configName,建议使用新创建出来的model使用use方法,例如 new User().use(...),也可以是从数据库刚刚查询出来的model使用use,总之注意一下线程安全问题
回复
谢谢您,我是把me.find(sql)改成Db.find(sql)解决的。
在映射方面,一个 Model 只能映射到一个数据源,也即:一个 Model 只能调用一次 arp.addMapping(...) 来映射。但可以使用 Model.use(configName) 这个方法临时切换到其它数据源,极度好使用,你可以试试,这样用: