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