您的位置:首页 > 其它

生成jFinal的动态条件查询语句的用法

2014-04-08 13:41 441 查看
上面提供的Conditions工具类用法其实也非常简单。

实例化一个Conditions对象:

Conditions condi = new Conditions();
//Conditions condi = new Conditions(Conditions.FUZZY);

构造方法没有传参表示的是所有字段都按照等于来处理,除非对字段有特别的查询类型设置

condi.setFiledQuery(Conditions.FUZZY, "name","field2");  //字段name、field2按照模糊查询

condi.setFiledQuery(Conditions.NOT_EQUAL, "filed3"); //字段filed3按照不等于查询

 上面是针对字段的查询、再比如传值查询,比如要查询某个字段的范围的时候可用用到:例如时间范围;

//针对字段field进行时间范围查询
condi.setValueQuery(Conditions.GREATER_EQUAL, "field", startdate); //开始时间
condi.setValueQuery(Conditions.LESS_EQUAL, "field", enddate); //结束时间

生成条件语句的方法也很简单:

如果对象为Model

condi.modelToCondition(model, "alias");

参数说明:model就是你前台获取到的过滤条件的Model对象

alias 表示的是你那条SQL中某张表的别名

例如: select * from tb_test t inner join tb_dual d on t.id = d.tid where 1 = 1 根据test表的值过滤

condi.modelToCondition(testModel, "t");  //t表示的上面tb_test表的别名

如果对象是Record则调用:recordToCondition(Record recordClass,String alias);用法都和上面的一样

注意别名也不是必须要传入的

调用上面的方法之后怎么获取生成的SQL和参数呢?

condi.getSql() //获取到条件SQL
condi.getParamList();//获取到参数数组;

因为是个参数的List你也可用跟你之前的其他参数进行合并,合并之后记得toArray()传入jFInal中

好现在总结一下:

如果你不需要对字段进行相关类型的查询只需要三步

1:实例化Conditions 、

2:传入Model或者Record生成条件SQL和参数、

3:获取生成的SQL和参数

如果你需要对查询过程中某些字段进行相关的类型控制就四步

1:实例化Conditions 、

2:对字段进行查询控制

3:传入Model或者Record生成条件SQL和参数、

4:获取生成的SQL和参数

最后如果有什么不对或者改进的地方也欢迎指正,大家共同进步!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: