当前位置: 代码迷 >> Eclipse >> 多条件可选查询解决方法
  详细解决方案

多条件可选查询解决方法

热度:56   发布时间:2016-04-23 12:58:18.0
多条件可选查询
在前台有几个查询条件的填写。填写了姓名后按照姓名模糊查找,填写了年龄后可以按年龄范围查找,填写了成绩后可以按成绩查找,这三个条件任写其中的两个或多个都可以按其对应的条件查找出来!不分先后!

------解决方案--------------------
StringBuffer,然后用append
------解决方案--------------------
把条件理清楚了,很easy的!不相信,自己试试呗

------解决方案--------------------
探讨
String sql="select pid,pname,model,price,manufact,stockNum,inDate,state from product where state=0 ";
if(ep.getPname()!=""){
System.out.println("==name"+ep.getPname());
sql=sql+" and pname like '%"……

------解决方案--------------------
Java code
package com.bt.employee.dao.impl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.bt.employee.dao.EmployeeDAO_Query;import com.bt.employee.entity.Employee;import com.bt.employee.util.DBUtil;public class EmployeeDAOImpl_Query1 implements EmployeeDAO_Query{    public List<Employee> specificInquiresr(String ename,             String age, String grade) throws SQLException {        Connection conn  = DBUtil.getConnection();        List<Employee> employees =  new ArrayList<Employee>();        StringBuffer sql = new StringBuffer();        sql.append("select * from 表 where 1=1");        //String ename1 = ename.trim();        if(ename.trim()!=""){            sql.append(" and ename like '%" + ename +"%'");        }                        if(age.equals("0")){            sql.append(" " );        }else if(age.equals("1")){            sql.append(" and age<60" );        }else if(age.equals("2")){            sql.append(" and salary between 60 and 80" );        }else if(age.equals("3")){            sql.append(" and salary between 80 and 100" );        }                if(grade!=""){            sql.append(" and grade= " + grade);        }                String sql1 = sql.toString();        PreparedStatement ps = conn.prepareStatement(sql1);        System.out.println(sql1);        ResultSet rs = ps.executeQuery();        while(rs.next()){            Employee e = new Employee();            e.setId(rs.getLong("id"));            e.setEname(rs.getString("ename"));            e.setAge(rs.getInt("age"));            e.setSalary(rs.getDouble("grade"));            employees.add(e);        }        return employees;    }}
------解决方案--------------------
ibatis的SQLmapping里面有isNotEmpty判断
  相关解决方案