2018-06-15 10:17
@钮飞虎 参数值及个数不同当然就不能用这个方法了,但是你可以通过一点改变让参数完全相同,例如用嵌套 sql , 以及针对某些不同参数使用 #(value) 来输出具体值,而不是 #para(...) 来生成问号占位
2018-06-15 10:15
jfinal demo 中默认使用的 context path 为 "", 所以 css、js、图片等资源的路径中的 context path 为 ""
而你使用的 context path 值为 "jfinal_demo",必然就找不到 css、js 等资源文件了
在 tomcat 下,让 context path 为 "" 的方法见这里:
https://my.oschina.net/jfinal/blog/353062
当然,你也可以将 context path 设置为任何值,但你就要改下 html 页面,在页面的资源路径前这样来加:
src="#(CTX)/原来的路径在此"
注意这个 CTX 对象不是凭空来的,需要在 configEngine(Engine me) 方法中配置一下:
me.addSharedObject("CTX", JFinal.me().getContextPath());
2018-06-14 23:48
@sxf2018 有 where 也不行,因为这个始终属于 select 块,而这个块在生成 totalRow 的 sql 时会被 replace 掉
2018-06-14 19:03
使用 paginateByFullSql 的前提条件是,两条 sql 中使用的问号占位符的个数可以共享,相当于下面两个方法,不同的 sql 区享了同样的 paras:
String sqlAAA = "select * from tableAAA where aaa=? and bbb=?";
String sqlBBB = "select * from tableBBB" where ddd=? and eee=?";
Object paras = {123, 456};
Db.find(sqlAAA, paras);
Db.find(sqlBBB, paras);
观察上面两个 Db.find 所使用的参数,然后回到你的 paginateByFullSql 方法,里面有两条 sql:
String totalRowSql 以及 String findSql,然后你代码中调用了两次 getSqlPara 获取到了两个 SqlPara 对象,对比一下这两个 SqlPara.getPara() 出来的数据个数与数据值是不是完全一样的,如果是的话,则可以使用,否则就不能使用