Java多条件和模糊查询

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;

	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值