SSM整合实例--(四)条件搜索

一、条件搜索

商品条目一旦多了起来,就不能一页一页的翻找。需要设置条件,根据条件搜索条目。

二、代码实现

在原来的查找所有productList的功能基础上添加条件参数,设置条件查询。

2.1 JSP页面修改

product_list.jsp

添加 searchDiv 代码,如下图所示。为搜索前端页面展示

SSM整合实例--(四)条件搜索_第1张图片
效果如下:
SSM整合实例--(四)条件搜索_第2张图片
新增的div中对应的js代码:

function resetSearch(){
	//重置数据
	$('#searchForm').form('clear');
}

function search(){
	//条件搜索
	$('#dg').datagrid('load',{
		pName: $('#pName').val(),
		sPrice:$('#sPrice').val(),
		ePrice:$('#ePrice').val()
	});
}

查找所有商品数据的js中增加以下代码,传递条件参数给后台程序
SSM整合实例--(四)条件搜索_第3张图片
2.2 Controller层代码修改

//带分页的JSP页面
@RequestMapping("/productList")
@ResponseBody
public EasyUIDateGridResult getProductList(Integer page, Integer rows, @RequestParam String pName, 
		@RequestParam Double sPrice, @RequestParam Double ePrice) {
	EasyUIDateGridResult result = productService.getProductList(page, rows, pName, sPrice, ePrice);
	return result;
}

添加了条件查询的三个参数, pName、sPrice、ePrice

2.3 Service层修改

Service接口层就不放上来了,只是更改参数

Service实现层修改如下:

/**
 * 根据当前页面和行数实现分页,可带条件查询
 */
@Override
public EasyUIDateGridResult getProductList(Integer page, Integer rows, String pName, Double sPrice, Double ePrice) {
	//使用pageHelper设置分页信息
	if(null == page) page = 1;
	if(null == rows) rows = 5;
	PageHelper.startPage(page, rows);
	//设置example对象条件,查询所有list
	TbProductExample example = new TbProductExample();
	Criteria criteria = example.createCriteria();
	//设置商品名模糊查询条件
	if(null != pName && !"".equals(pName)) {
		criteria.andPNameLike("%" + pName + "%");
	}
	//设置商品价格下限查询条件
	if(null != sPrice && !"".equals(sPrice)) {
		criteria.andPPriceGreaterThan(sPrice);
	}
	//商品价格上限查询条件
	if(null != ePrice && !"".equals(ePrice)) {
		criteria.andPPriceLessThan(ePrice);
	}
	List list = mapper.selectByExample(example);
	//获取分页信息
	PageInfo info = new PageInfo<>(list);
	//分装到EasyUIDateGridResult
	EasyUIDateGridResult result = new EasyUIDateGridResult();
	//设置总纪录数
	result.setTotal((int)info.getTotal());
	//设置list
	result.setRows(info.getList());
	
	return result;
}

主要增加了以下部分来设置条件查询:

	Criteria criteria = example.createCriteria();
	//设置商品名模糊查询条件
	if(null != pName && !"".equals(pName)) {
		criteria.andPNameLike("%" + pName + "%");
	}
	//设置商品价格下限查询条件
	if(null != sPrice && !"".equals(sPrice)) {
		criteria.andPPriceGreaterThan(sPrice);
	}
	//商品价格上限查询条件
	if(null != ePrice && !"".equals(ePrice)) {
		criteria.andPPriceLessThan(ePrice);
	}

以上就完成了条件搜索功能的实现。搜索时datagrid会带参重载,即完成了搜索结果的展示。

三、搜索效果

搜索商品名含1的

SSM整合实例--(四)条件搜索_第4张图片

新增以下商品:

SSM整合实例--(四)条件搜索_第5张图片
价格条件搜索:

SSM整合实例--(四)条件搜索_第6张图片
价格+商品名搜索:

SSM整合实例--(四)条件搜索_第7张图片
大于价格搜索:

SSM整合实例--(四)条件搜索_第8张图片
以上是条件查询功能的添加。

其他功能后面再完善。

你可能感兴趣的:(JAVA框架)