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

testfh 2014-07-31 10:15:10
要暴露所有的表名及对应字段名让用户自定义查询:不是写原始SQL,而是选择表及字段, 选关联及过滤条件等,然后在代码里根据用户的选择拼SQL语句.

问题:
1).选中的表名,条件等参数怎么样传到后台才方便组合成sql?
2).保存用户的自定义,供以后使用。比如下次打开某个自定义查询,把用户选择过的表,字段及条件等重新展示出来。该怎么设计表来保存自定义?
3).代码怎样分层? web层,dao层(似乎用不上)?
...全文
107 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lightning_16 2014-08-01
  • 打赏
  • 举报
回复
即席查询~~ 暴露所有表名,这是个错误思路. 10个字段并不表示10个字段都要用来查询,主键也要查询? 后台建议用配置方式的: 比如 columnname,displayname,type,,dropname,cansort.分别标示,字段名(拼sql),显示的名字,查询时可以输入的类型(字符,时间,下拉),下拉名(如果type是下拉),当前字段是否可以点表头排序. 我们是这么做的,感觉还不错.之前也用过反射判断实体名,生成万能排序,根本不好用
showhunter74 2014-08-01
  • 打赏
  • 举报
回复
如果只需要实现简单的自定义查询的话 后台还是分server层、DAO层 server层,主要就是 3个功能 查表名,查列名,自定义数据查询 dao层 就是对应server层 的调用 基本流程就是。 1、进入 系统界面/web 界面,调用 server 获取表名 ,然后页面展现 2、点选 表名,调用查询列名功能,然后页面展现列名 3、用使用表单,内加 多选框+文本框 将 用户选择内容 传入 server层。不同属性 用不同的id 或者class 区别。可以用多层或多个MAP来保存 参数。 4、在server层,将sql进行拼接(如果 使用mybatis或者hibernate 也可以在xml里拼接) 5、将拼接好的sql 进行查询,将返回结果 页面展现
tony4geek 2014-08-01
  • 打赏
  • 举报
回复
就如楼上的简单点sql 还行, 就是根据条件然后分析,最后 拼接sql
niuyongzljtoo 2014-08-01
  • 打赏
  • 举报
回复
自己在前台写个JS函数,组成JSON报文,后台写个JAVA解析JSON报文的类,写一个存储报文的方法存到数据表
scott_129 2014-07-31
  • 打赏
  • 举报
回复
1.对于单表的话,传表名,字段名,条件就可以了,直接拼凑。对于多表联合查询的话,可以设置一个属性,当用户选了多表联合查询时,拼凑sql采用另一种方式。 单表:select 传过来的字段名遍历 from 表名 where 分别拿过滤的字段名和value。 多表:select 需要查询的字段(需要根据表名来区分) from 多个表 where 关联字段逐个= (采用最简单的连接方式) 再加上过滤条件。 我只是大概说了一下我的思路。 2.保存用户自定义,可以拼凑的sql直接存储,然后再把第一步拼凑的过程逆转一次,显示出来,如果用户改变了查询条件的值,此时只需要将这个sql的条件对应值改变就可以直接查询了 3.分成还是常规的action, service,dao吧,dao层肯定用得上,因为想数据库连接的管理,事务的管理,都可以在这里处理,在sevice中拼凑好sql传进dao层来就可以了。 我想到更好的再回复你,只是初步想了一下

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧