这两天在研究复杂查询的实现,想把普通sql的写法,转成criteria的写法。没想出一个好的方法,特抛砖一块,呵呵。
((name='test1' or name='test2') and (age>20 and age<30)) and sex='1'
这个对应的结果是这样的
Ex.and(Ex.and(Ex.or(name='test1',name='test2'),Ex.and(age>20,age<30)),sex='1')
怎么能使用程序自动解析并得到结果呢?
初步想法是,通过编译原理的方式进行解析,组装成一棵树,然后对树进行遍历。
((name='test1' or name='test2') and (age>20 and age<30)) and sex='1'
这个对应的结果是这样的
Ex.and(Ex.and(Ex.or(name='test1',name='test2'),Ex.and(age>20,age<30)),sex='1')
怎么能使用程序自动解析并得到结果呢?
初步想法是,通过编译原理的方式进行解析,组装成一棵树,然后对树进行遍历。