当前位置: 代码迷 >> Java Web开发 >> 高分请问关于自定义查询的相关有关问题
  详细解决方案

高分请问关于自定义查询的相关有关问题

热度:53   发布时间:2016-04-16 22:01:17.0
高分请教关于自定义查询的相关问题
要暴露所有的表名及对应字段名让用户自定义查询:不是写原始SQL,而是选择表及字段, 选关联及过滤条件等,然后在代码里根据用户的选择拼SQL语句.

问题:
1).选中的表名,条件等参数怎么样传到后台才方便组合成sql?
2).保存用户的自定义,供以后使用。比如下次打开某个自定义查询,把用户选择过的表,字段及条件等重新展示出来。该怎么设计表来保存自定义?
3).代码怎样分层? web层,dao层(似乎用不上)?
------解决方案--------------------
1.对于单表的话,传表名,字段名,条件就可以了,直接拼凑。对于多表联合查询的话,可以设置一个属性,当用户选了多表联合查询时,拼凑sql采用另一种方式。
单表:select 传过来的字段名遍历  from 表名   where  分别拿过滤的字段名和value。
多表:select  需要查询的字段(需要根据表名来区分) from 多个表  where  关联字段逐个= (采用最简单的连接方式) 再加上过滤条件。
我只是大概说了一下我的思路。
2.保存用户自定义,可以拼凑的sql直接存储,然后再把第一步拼凑的过程逆转一次,显示出来,如果用户改变了查询条件的值,此时只需要将这个sql的条件对应值改变就可以直接查询了
3.分成还是常规的action, service,dao吧,dao层肯定用得上,因为想数据库连接的管理,事务的管理,都可以在这里处理,在sevice中拼凑好sql传进dao层来就可以了。

我想到更好的再回复你,只是初步想了一下
------解决方案--------------------
如果只需要实现简单的自定义查询的话
后台还是分server层、DAO层
server层,主要就是 3个功能 查表名,查列名,自定义数据查询
dao层 就是对应server层 的调用
基本流程就是。
1、进入 系统界面/web 界面,调用 server 获取表名 ,然后页面展现
2、点选 表名,调用查询列名功能,然后页面展现列名
3、用使用表单,内加 多选框+文本框 将 用户选择内容 传入 server层。不同属性 用不同的id 或者class 区别。可以用多层或多个MAP来保存 参数。
4、在server层,将sql进行拼接(如果 使用mybatis或者hibernate 也可以在xml里拼接)
5、将拼接好的sql 进行查询,将返回结果 页面展现
  相关解决方案