多条件查询
Posted guziteng1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多条件查询相关的知识,希望对你有一定的参考价值。
多条件查询自己问题主要困惑于自己不会动态添加文本框所以自己从网上搜索到了一些函数我选择了其中最为简单的一种
然后另一个关键就是sql语句的拼写自己采用了Map<String, String[]> parameterMap = req.getParameterMap();来获得所有的关键字然后在其中运用两个List存放其中的关键字和关键字的内容,
然后将servlet中的list传到 dao层
public static List<Grade>list(List<Object>m, List<Object>n ,String b) { String sql="select * from test20191117 where 1 = 1 "; //select语句 //select * from tabel_name 这是查询所有,若要查询某一列 //select column1_name,column2_name,column3_name from table_name StringBuilder c=new StringBuilder(sql); if(b.equals("binglie")) { String d=" = "; for(int i=0;i<m.size();i++) { if(new String((String) m.toArray()[i]).contains("type")) { c.append("and "+n.toArray()[i]); } if(new String((String) m.toArray()[i]).contains("cipin")) { if(new String((String) n.toArray()[i]).contains("jingque")) { d=" = "; c.append(d); } else { d=" like "; c.append(d); } } if(new String((String) m.toArray()[i]).contains("search")) { if(d.equals(" like ")) { c.append("‘%"+n.toArray()[i]+"%‘ "); } else { c.append(" ‘"+n.toArray()[i]+"‘ "); } } }} else if(b.equals("huozhe")) {c.append(" and "); String d=" = "; for(int i=0;i<m.size();i++) { if(new String((String) m.toArray()[i]).contains("type")) { c.append(n.toArray()[i]);} if(new String((String) m.toArray()[i]).contains("cipin")) { if(new String((String) n.toArray()[i]).contains("jingque")) { d=" = "; c.append(d); } else { d=" like "; c.append(d); } } if(new String((String) m.toArray()[i]).contains("search")) { if(d.equals(" like ")) { c.append("‘%"+n.toArray()[i]+"%‘ "); } else { c.append("‘"+n.toArray()[i]+"‘ "); } } if(new String((String) m.toArray()[i]).contains("xuanze")) { if(new String((String) n.toArray()[i]).contains("binglie")) {System.out.println(i); c.append(" and ");} else { c.append(" or ");} } } } else { String d=" = "; for(int i=0;i<m.size();i++) { if(new String((String) m.toArray()[i]).contains("type")) { c.append("and "+n.toArray()[i]+d); } if(new String((String) m.toArray()[i]).contains("search")) { c.append("‘"+n.toArray()[i]+"‘ "); } if(new String((String) n.toArray()[i]).contains("buhan")) { d=" != "; } System.out.println(b); } } System.out.println(b); sql=c.toString(); System.out.println(sql); List<Grade>list=new ArrayList<>(); //给集合list创造(new)一个存储空间用于存放数据 Connection conn=DBUtil.getConn(); Statement state=null; ResultSet rs=null; try { state=conn.createStatement(); rs=state.executeQuery(sql); Grade grade=null; while(rs.next()) //这里表示,当rs.next()有值得时候,即收到查询结果 { String name=rs.getString("name"); String sex=rs.getString("sex"); String nature=rs.getString("nature"); String time=rs.getString("time"); String old=rs.getString("old"); String select=rs.getString("zhengzhi"); String checkbox1=rs.getString("checkbox1"); String checkbox2=rs.getString("checkbox2"); String checkbox3=rs.getString("checkbox3"); String checkbox4=rs.getString("checkbox4"); grade=new Grade(name,sex,nature,time,old,select,checkbox1,checkbox2,checkbox3,checkbox4); list.add(grade); //表示,把bean里的数据存入到list当中 } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(state, conn); } return list; }
最后实现了其中的多条件查询
以上是关于多条件查询的主要内容,如果未能解决你的问题,请参考以下文章
GraphQL 查询,根据某些条件使用片段。已加载 GraphQL 文件
Mybatis -- 动态Sql概述动态Sql之<if>(包含<where>)动态Sql之<foreach>sql片段抽取