使用hibernate的QBC进行条件组合查询, 相信大家都用用到 Restrictions这个类, 那 sql里面的and, or在这里里面又怎么表达出来呢。使用如下:
Restrictions.and(lhs, rhs) 把2个条件and起来, 如果是多个and连起来咋办比如 性别是男, 省份在广东省, 深圳市 或者 湖南省,长沙市, 在sql里面是
and 性别=1 and ( (省份=广东省 and 城市=深圳市) or (省份=湖南省 and 城市=长沙市) ), 这时候我们可以用 Conjunction con = Restrictions.conjunction() 构造出一个对象,然后,
con.add(Restrictions.eq("省份", "广东省")),
con.add(Restrictions.eq("城市", "深圳市"))
下一组条件如法炮制, N组条件最后要用or组合, 我们用 Restrictions.disjunction()构造一个对象来连接他们, OK,这样已经可以应付各种and or的嵌套组合了。
hibernate虽然感觉很牛叉,但是把我们跟sql直接造成了一下沟通转换工作, 有得必有失, 不要麻木跟风,要对症下药, mybatis也是个很不错的选择。