2022-02-28 17:42
https://jfinal.com/doc/5-14
new ActiveRecordPlugin("这个值", dsMysql)
Db.use("这个值").find(XXX
如果他是第一个启动的ActiveRecordPlugin插件,
那么Db.use() 这个主配置的name就是 "这个值" ,不是"main"了。
PS代码:
/**
* Replace the main config if current config name is MAIN_CONFIG_NAME
*/
if (MAIN_CONFIG_NAME.equals(config.getName())) {
DbKit.config = config;
Db.init(DbKit.config.getName());
}
/**
* The configName may not be MAIN_CONFIG_NAME,
* the main config have to set the first comming Config if it is null
*/
if (DbKit.config == null) {
DbKit.config = config;
Db.init(DbKit.config.getName());
}
2022-02-21 22:15
@北流家园网 2022-02-21 08:59:33已经发版了呀,在仓库里面了
https://developer.aliyun.com/mvn/search
2022-02-18 17:38
@zeroabc totalRow 总行数这个值的来源,如果想在后端缓存起来。
第一次查得总行后,存起来供下次使用就行。
至于咋存咋取值,完全就是业务处理了,没有最好只有符合业务情况的才是好,可以CacheKit,可以Redis,可以ConcurrentHashMap。
可以为该业务或请求加个参数拦截器,拦截查询参数作为键都是可以的。
MyDbPro.paginate(totalRow,XX
总的来看,前端缓存totalRow相对折中灵活一些。比如查询按钮会设置totalRow为null。长时间停留在页面,js还可以定时执行设置totalRow为null。刷新页面也会设置totalRow为null。这些都是后话了,需要看场景再决定咋缓存totalRow
2022-02-14 10:43
@北流家园网 config.getDialect().takeOverDbPaginate 和前面分享的数据库增加乐观锁扩展差不多,再重写isTakeOverModelPaginate() 和takeOverDbPaginate方法就可以了
2022-02-14 10:41
@山东小木 老师是的,分页的总行,和以前的SQL查询结果是一样的,在select count(*)位置做了if判断,其他都是一样的。
本来想对paras.toString再md5一下做个全局后台缓存来着,写代码时觉得前端传入值更方便轻量些,就让传入值了
2022-02-14 09:57
@北流家园网 是的缓存了,只不过是缓存在前端了,和缓存一样,增删都需要更新缓存,需要置为null才会获取最新的
2022-02-13 15:08
@山东小木 支持前端传入,用法和以前一模一样,不用太多改变,如果Action里面只有一个分页查询,可以使用拦截器@Before(PaginateInterceptor.class) 参数有totalRow就行。
如果有多个分页处理,手动MyDbPro.paginate(传入总行数即可。
由前端缓存 总行数,查询条件改没改变,前端自然是知道的,前端查询条件如果改变,传入的总行数传null或者不传值即可,都会刷新最新的总行数
2022-02-11 11:38
@山东小木 是的,我遇到一些慢SQL有因为 select count(*) 导致CPU暴涨的,在索引已经加过的情况下,就是去掉paginate,手动find查询再二次包装返回对象了。
应该是可以扩展paginate方法的,但毕竟我没有那么多慢SQL,业务哪个点遇到了就单处理了,没做封装。确实可以瞅瞅paginate方法看咋简单的扩展一下
2022-02-10 15:18
@山东小木 o(╥﹏╥)o 没啥经验,设计表业务的时候尽量避免大表出现,做好索引。。。如果CPU还飙升,就根据查询条件缓存总行数,别总去count*,手动find分页就行。。。如果还飙升,充钱就行。。。我一般优先充钱解决问题。。。