1.对于单表的话,传表名,字段名,条件就可以了,直接拼凑。对于多表联合查询的话,可以设置一个属性,当用户选了多表联合查询时,拼凑sql采用另一种方式。
单表:select 传过来的字段名遍历 from 表名 where 分别拿过滤的字段名和value。
多表:select 需要查询的字段(需要根据表名来区分) from 多个表 where 关联字段逐个= (采用最简单的连接方式) 再加上过滤条件。
我只是大概说了一下我的思路。
2.保存用户自定义,可以拼凑的sql直接存储,然后再把第一步拼凑的过程逆转一次,显示出来,如果用户改变了查询条件的值,此时只需要将这个sql的条件对应值改变就可以直接查询了
3.分成还是常规的action, service,dao吧,dao层肯定用得上,因为想数据库连接的管理,事务的管理,都可以在这里处理,在sevice中拼凑好sql传进dao层来就可以了。
我想到更好的再回复你,只是初步想了一下