jfinal 的mysql多条件查询

咨询一个问题,jfinal的mysql 我使用的是Db 自定义sql文件,然后引用。如果我想写一个多条件查询 该字段有值就查询该字段,没有就不执行该查询条件。该怎么动态的去写? 不知道是不是看的不仔细 在文档里看到了参数带有比较运算符 不知道在这里能不能用?

评论区

hzw

2017-07-06 16:25

另外 写分页的时候 语句这样写的 会报错
#sql("findtea")
SELECT * FROM teacher_info WHERE 1=1 limit 0,10
#end

SqlPara sqlPara= Db.getSqlPara("findtea");

Page list= TeacherInfo.dao.paginate(1,10,sqlPara);

这样有问题么?

2017-07-06 17:29

#sql("paginate")
select id,username,actionKey,opertime,ip,params,result from log where 1=1
#for(x:conds)
#if(x.value)
and #(x.key)#para(x.value)
#end
#end
order by opertime desc
#end
Kv conds = Kv.by("opertime >= ", startTime).set("opertime <= ", endTime).set("username = ", username);
SqlPara para = Db.getSqlPara("log.paginate", Kv.by("conds", conds));
Page userLists = Db.paginate(pageNumber, 10, para);

hzw

2017-07-06 17:57

@朱 这个是动态的生成么?看文档说明 这个适用于Map 类型的 我想要的效果是直接传值bean 然后bean里 的值是随机的 字段是固定的 该字段有值则添加到查询条件里面 没有 则过

JFinal

2017-07-07 11:03

@hzw 仔细看一下 jfinal 手册有关 sql 管理这一章,里面有很多例子

JFinal

2017-07-07 11:07

@朱 回复中的代码十分简洁,而且 key 值用到了比较操作符,超赞

hzw

2017-07-11 09:06

@JFinal 哦哦 这个问题解决了 但是做拦截器的时候有个问题 我拦截的controller 方法的确拦截了 但是 System.out.println("执行拦截");
controller.render("login.html");
System.out.println("执行完毕"); render 无反应 也不报错 输出全部执行了 路径不对的情况下 不是应该直接报错么?

hzw

2017-07-11 09:38

@朱 多谢大神 一开始没看懂 尴尬了

hzw

2017-07-11 10:36

@JFinal jfinal官方微信点击切换菜单和输入框 切换不了 。不知道是不是我手机的问题 别的公众号没问题 只是反映一下 可以无视哈

JFinal

2017-07-13 17:21

@hzw 取消关注,然后重新关注一下应该就可以了

热门反馈

扫码入社