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

第一步:  初始化对象    创建返回值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。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值