多表 多条件 且 条件数目不明 java拼接sql问题,求解!

问题描述

需要完成的功能如下表结构大概如下目前完成的代码多表多条件且条件数目不明确,所以在java代码中有各种判断目前搞定单条件的,那么2个条件3个条件4个条件算下来的话会有很多条件组合的模式出现,如果向以上一个个if去写代码会很臃肿,很奇葩....求各位遇到类似情况的大爷...指点迷津..求好的程序方案!

解决方案

解决方案二:
个人建议:你的sql里面还是把所有参数写全.然后再程序判断里面判断传入参数是否为空,不为空就填写参数进去,否则不填就是。或者将可能出现的所有字段用一个对象封装起来,然后通过判断不同的属性值是否为空来拼接sql的where条件。同样可实现。
解决方案三:
条件不确定,但是你可以在你查询的form表里定义四个hidden的input标签,分别对应这四个条件,你做好判断,如果选择了某个条件,你就对应地给那个hidden赋值,后台就会变得非常简单了,你只需要判断每个条件是否为null就可以拼装sql了:if(!StringUtils.isEmpty(type)){hql.append("andx.type=?");params.add(type);}
解决方案四:
<sqlid="selectPmoAgent_where"><where>VALID!=0<iftest="id!=nullandid!=''">andID=#{id}</if><iftest="name!=nullandname!=''">andNAMElike'%${name}%'</if><iftest="manager!=nullandmanager!=''">andMANAGER=#{manager}</if><iftest="managerPhone!=nullandmanagerPhone!=''">andMANAGER_PHONE=#{managerPhone}</if><iftest="parentId!=nullandparentId!=''">andPARENT_ID=#{parentId}</if><iftest="agentLevel!=nullandagentLevel!=''">andAGENT_LEVEL=#{agentLevel}</if><iftest="remark!=nullandremark!=''">andREMARK=#{remark}</if><iftest="createDate!=nullandcreateDate!=''">andCREATE_DATE=#{createDate}</if><iftest="createUser!=nullandcreateUser!=''">andCREATE_USER=#{createUser}</if><iftest="updateDate!=nullandupdateDate!=''">andUPDATE_DATE=#{updateDate}</if><iftest="updateUser!=nullandupdateUser!=''">andUPDATE_USER=#{updateUser}</if></where></sql>

上面是我写的一个ibatis的一个配置。这个就是通过传入参数是否为空来判断是否拼接sql
解决方案五:
个人建议还是sql还是不要自己拼的好,有时间的话可以看看mybatis的用法。没时间的话。按1L的做法就好。
解决方案六:
只需要判断并拼接where条件,看#3一目了然。
解决方案七:
if(typeid!=0){aTypeid="andtypeid="+typeid;}if(sstrate!=2){aSstrate="andsstrate="+sstrate;}if(!text.equals("")){aSname="andsnamelike'%"+text+"%'";}Stringsql="FromStrategyswhereuserid="+userid+"andstype="+stype+aTypeid+aSstrate+aSname+"orderbysiddesc";可以这样拼接提出公用的然后安得根据条件判断添加
解决方案八:
好就这么定了,按3#的做,doit。no纠结

时间: 2024-10-29 15:39:57

多表 多条件 且 条件数目不明 java拼接sql问题,求解!的相关文章

SQL表中数据按条件批量导出多个Excel文件

SQL Server表中数据按条件批量导出为多个Excel文件是本文我们主要要介绍的内容,在一次SQL Server数据库的操作中,需要将某个有数十万行数据的表按类别导出为xls文件,每个类别一个xls.将数据表中的数据导出并保存为xls简单,用 SSIS或者查询出来之后另存为都可以.但是,这个表中的分类有数百个,如果一个个用SSIS或者查询另存为的话,工作量巨大.前思后想,想到了用 while循环查询,并用bcp导出的方法. 下面是相关代码: --声明需要的变量 declare @sql va

哈希表判断冲突的条件有点不懂

问题描述 哈希表判断冲突的条件有点不懂 void CreateHashList() { int i; for(i=0; i<HASH_LENGTH;i++) { HashList[i].py=""; HashList[i].k=0; HashList[i].si=0; } for(i=0;i<HASH_LENGTH;i++) { int sum=0; int adr=(NameList[i].k)%M; //哈希函数 int d=adr; if(HashList[adr].

oracle从一张表中根据不同条件查询出两个结果 然后查出两个结果中相同的数据

问题描述 oracle从一张表中根据不同条件查询出两个结果 然后查出两个结果中相同的数据 这是表中数据 我用下面这种方法 select * from ((select * from SFFX_JGJPZ_DETAIL d where d.jgjpz_id=1) o), ((select * from SFFX_JGJPZ_DETAIL d where d.jgjpz_id=8) t) where o.platename=t.platename ; 查出来的结果对的 却在一行 怎么解决.. 解决方

多条件查询拼接sql语句如何防止sql注入

问题描述 假如有四个条件可以任意输入1到4个条件取交集求解 解决方案 解决方案二:引用楼主abc12346579的回复: 假如有四个条件可以任意输入1到4个条件取交集求解 你的"任意输入条件"是什么意思?如果说随便输入sql,那么这其实根本不需要注入,你都随便让人家写代码了,还要想什么"注入"方式干什么?直接干就行了.解决方案三:你要是让人家输入sql,那就相当于超市敞开大门让顾客把东西搬回家,再来讨论"如何防止盗窃"就没有意义了.解决方案四:在

好心塞的问题,表关系不对了,以前从来没有过的,求解

问题描述 好心塞的问题,表关系不对了,以前从来没有过的,求解 这个问题看看你们遇到过没,就是A表关联B表,然后查询A表的全部数据,可以通过关系,查询出B表的数据,但是查询A表的单条数据就不能用关系查询出B表的数据了,这是为什么啊 解决方案 单个数据是什么意思,单个数据是关联的那个表的数据吗? 解决方案二: AB谁是主表?如果配置了双向关系,应该是可以互相级联查询的

Hibernate Criteria查询问题:连表查询增加关联条件(生成的sql条件指定到on后面)

问题描述 代码如下:Session session=this.getHibernateTemplate().getSessionFactory().getCurrentSession();session.createCriteria(ProjectBD.class,"h").add(Restrictions.eq("h.xmguid", xmguid)).addOrder(Order.desc("h.subtime")).createAlias(

比较不错的asp单表单字段多条件查询_应用技巧

用途:文章表内文章关键字查询 查询格式: 百度 google  百度好还是google好 百度+google (也可不输入条件全部查询) <!--#include file="conn.asp"--> <% Function SearshSQL(Tname,Lname,Str) 'Tname-表名 Lname-列名 Str-查询的字符 If Trim(Str)="" then         MySql="Select * From &q

比较不错的asp单表单字段多条件查询

用途:文章表内文章关键字查询 查询格式: 百度 google  百度好还是google好 百度+google (也可不输入条件全部查询) <!--#include file="conn.asp"--> <% Function SearshSQL(Tname,Lname,Str) 'Tname-表名 Lname-列名 Str-查询的字符 If Trim(Str)="" then         MySql="Select * From &q

LigerUi中Grid表记录如何根据条件显示不同颜色和不同内容

{ display: "性别", name: "name", width: 130, type: "text", align: "left", render: function (row) { var html = row.sex == 0 ? "男" : "<span style='color:red'>女</span>"; return html; } //