多条件以及分页查询的实现方法

第一步:  初始化对象    创建返回值list及其类型,创建StringBuffer对象,注意要new StringBuffer(“通过构造方法进行初始化”)

创建param数组,这里用ArrayList类型更加灵活,之后通过.toArray()转化为数组

public List<BookInfo> getInfo(String typeId,String bookName,String isborrow,String pageNo) {
		List<BookInfo> list = new ArrayList<BookInfo>();
		StringBuffer sql = new StringBuffer("select b.*,t.type_name from book_info b left join book_type t on b.book_type = t.id where 1=1");
		List<Object> parmas = new ArrayList<Object>();

第二步:判断函数所传值是否为空,如果为空,则不参加条件查询,所有值默认String

                if(typeId != null && !typeId.trim().isEmpty() && !typeId.equals("0")){
			sql.append(" and book_type =?");
			parmas.add(typeId);
		}
		
		if(bookName != null && !bookName.trim().isEmpty()){
			sql.append(" and book_name like ?");
//                      模糊查询  %name%
			parmas.add("%" +bookName+ "%");
		}
		
		if(isborrow != null && !isborrow.trim().isEmpty() && !isborrow.equals("2")){
			sql.append(" and is_borrow =?");
			parmas.add(isborrow);
		}
		if(pageNo == null){
			sql.append(" order by creation_time desc limit 0,5");
		}else{
			sql.append(" order by creation_time desc limit ?,5");
			int showNo = Integer.parseInt(pageNo)*5-5;
			parmas.add(showNo);
		}
//		sql,params[] 初始化完毕,记得调用dao方法,获得结果集rs
		rs = super.executeQuery(sql.toString(), parmas.toArray());
		try {
			while(rs.next()){
				String code = rs.getString("book_code");
				String type = rs.getString("type_name");
				String name = rs.getString("book_name");
				String createBy = rs.getString("createBy");
				String press = rs.getString("publish_press");
				int isBorrow = rs.getInt("is_borrow");
				
				BookInfo info = new BookInfo();
				info.setBookCode(code);
				info.setBookType(type);
				info.setBookName(name);
				info.setCreatedBy(createBy);
				info.setPublishPress(press);
				info.setIsBorrow(isBorrow);
				list.add(info);
				
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return list;
	}

注:以后可以将函数传值封装为对象,比如这里 创建一个查询类Query(),其成员变量为pageId,bookname,isborrow,pageNo,pageInfo。

猜你喜欢

转载自blog.csdn.net/qq_41902618/article/details/81109954