Java实现多条件查询最主要是SQL语句,如何写好SQL语句是关键。
步骤一:从jsp页面获取获取需要查询的字段值,有多少条件查询就获取到多少字段,并且拼接,我这里使用ajax请求方法
var er = $("# “).val();var ey = $(”# “).val();
var sD = $(”# ").val();获取值,
$.ajax({
url : "${ctx}/servlet/QueryInfor?type=SelectXiaoFeiD&areaid=" 请求路径
+ er + "&username=" + ey+ "&sD=" + sD+ "&eD=" + eD,拼接参数传递到servlet
type : "get",
async : true,
dataType : "json",//传输的数据的类型
})
步骤二:接收从jsp获取到的数据
String areaid = request.getParameter("areaid");
String username = request.getParameter("username");
String sD = request.getParameter("sD");
String eD = request.getParameter("eD");
if (areaid == null) {
areaid = "0";
}
List<Business> bus = query.selectxf(Integer.valueOf(areaid), username,sD, eD);请求Dao层里面selectxf的方法,然后把查询到的数据放入List集合里面
步骤三:请求dao层的查询
Private String selectbyl=” select *from user where 1=1”
定义一个需要查询SQL语句
public List<Business> selectxf(int areaid,String username,String sD,String eD) {
// TODO Auto-generated method stub
List<Business> busxf = new ArrayList<Business>();定义一个集合
StringBuffer stBuffer=new StringBuffer(selectbyl);
把SQL语句放入StringBuffer里面,因为StringBuffer是可以改变字符的长度,便于拼接SQL语句//拼接字符串
给需要拼接的字段判断,如果数据为空就选择不拼接
if(areaid!=0){
stBuffer.append(" and area.areaid=" +areaid);
}
if(username!=null&&!username.trim().isEmpty()){
stBuffer.append(" and user.username like '%" +username + "%'"); **模糊查询**
}
if(sD!=null&&!sD.trim().isEmpty()){
stBuffer.append(" and person.buydate >= " +"'"+sD+"'");
}
if(eD!=null&&!eD.trim().isEmpty()){
stBuffer.append(" and person.buydate <= "+"'"+eD+"'");
}
SQL语句也是有执行先后的顺序,这里不多说,需要的可以百度。
Where 是要放在group by 前面的,不然会报SQL语句错误,所以再次凭借它放在最后面
stBuffer.append(" GROUP BY DATE_FORMAT(buydate,'%Y%m'),person.userid ");
下面是普遍的java查询
try {
con = DbUtil.getConnection();
ps = con.prepareStatement(stBuffer.toString());
stBuffer一定要转换成字符
rs = ps.executeQuery();
Business bssxf = null;
while (rs.next()) {
bssxf = new Business();
bssxf.setUsername(rs.getString("username"));
bssxf.setUserid(rs.getInt("userid"));
bssxf.setBalance(rs.getDouble("balance"));
bssxf.setAreaname(rs.getString("areaname"));
bssxf.setBuyDate(rs.getString("buyDate"));
busxf.add(bssxf);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DbUtil.close(con, ps, rs);
}
return busxf;
}