一、删除商品实施思路
- 判断商品是否可以删除,例如加入购物车的商品就不允许被删除
- 在商品删除是要有确认操作,以免误删
二、实现
- 在ProductInfoService接口中编写删除的方法
public int delete(Integer pid);
- 在ProductInfoServiceImpl业务逻辑中实现方法
@Override
public int delete(Integer pid) {
int num=-1;
try {
num=productInfoMapper.deleteByPrimaryKey(pid);
} catch (Exception e) {
e.printStackTrace();
num=0;
}
return num;
}
- 在控制层实现操作
@RequestMapping("/delete")
public String delete(Integer pid, Model model){
int num= productInfoService.delete(pid);
if (num>0){
model.addAttribute("del","删除成功");
return "forward:/prod/split.action";
}else {
model.addAttribute("del","删除失败");
return "forward:/prod/split.action";
}
}
- 修改jsp页面
product.jsp
编辑点击按钮运行的方法和所携带的参数
编写方法
编写删除情况提示框
- 运行结果
三、实现多条件查询思路
- 由于mybatis逆向工程生成的实体类ProductInfo中的属性不足以支撑多条件查询(例如最高价格和最低价格),所以需要再创建一个VO层封装一些查询需要的类;
- 实现分页多条件查询
- 判断是否有符合产品没有就显示“没有符合商品”
四、实现
- 在pojo包下创建vo包并编写一个实体类ProductInfoVO.java
package com.oracle.xiaomi.pojo.vo;
public class ProductInfoVO {
private String pname;
private Integer typeid;
private Double lprice;
private Double hprice;
private Integer page=1;
public ProductInfoVO() {
}
public ProductInfoVO(String pname, Integer typeid, Double lprice, Double hprice, Integer page) {
this.pname = pname;
this.typeid = typeid;
this.lprice = lprice;
this.hprice = hprice;
this.page = page;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public Integer getTypeid() {
return typeid;
}
public void setTypeid(Integer typeid) {
this.typeid = typeid;
}
public Double getLprice() {
return lprice;
}
public void setLprice(Double lprice) {
this.lprice = lprice;
}
public Double getHprice() {
return hprice;
}
public void setHprice(Double hprice) {
this.hprice = hprice;
}
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
@Override
public String toString() {
return "ProductInfoVO{" +
"pname='" + pname + '\'' +
", typeid=" + typeid +
", lprice=" + lprice +
", hprice=" + hprice +
", page=" + page +
'}';
}
}
- 在ProductInfoMapper接口中编写多条件查询的方法
public List<ProductInfo>getAllByVO(ProductInfoVO vo);
- 在ProductInfoMapper.xml文件中编写查询语句
<select id="getAllByVO" parameterType="com.oracle.xiaomi.pojo.vo.ProductInfoVO" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from product_info
<!--拼条件-->
<where>
<if test="pname!='' and pname!=null">
and p_name like '%${pname}%'
</if>
<if test="typeid!=null and typeid!=-1">
and type_id=#{typeid}
</if>
<if test="lprice!=null and hprice==null">
and p_price>=#{lprice}
</if>
<if test="lprice==null and hprice!=null">
and p_price <=#{hprice}
</if>
<if test="lprice!=null and hprice!=null">
and p_price between #{lprice} and #{hprice}
</if>
</where>
order by p_id desc
</select>
- 在ProductInfoService接口中编写所条件查询方法
public PageInfo<ProductInfo> splitPageVO(ProductInfoVO vo, int pageSize);
}
- 在ProductInfoServiceImpl.java中实现这个方法
@Override
public PageInfo<ProductInfo> splitPageVO(ProductInfoVO vo , int pageSize) {
PageHelper.startPage(vo.getPage(),pageSize);
List<ProductInfo> list=productInfoMapper.getAllByVO(vo);
PageInfo<ProductInfo> pageInfo=new PageInfo<>(list);
return pageInfo;
}
- 修改之前分页的控制层
@RequestMapping("/split")
public String split(ProductInfoVO vo, Model model) {
PageInfo info = productInfoService.splitPageVO(vo,PAGE_SIZE);
model.addAttribute("info", info);
return "product";
}
- 修改product.jsp页面
info传入查询条件内容 showPage为下面异步处理方法
<!--分页的AJAX实现-->
<script type="text/javascript">
function showPage(page) {
var pname=$("#pname").val();
var typeid=$("#typeid").val();
var lprice=$("#lprice").val();
var hprice=$("#hprice").val();
if(page==0)
page=1;
$("#table").load("http://localhost:8080/prod/split.action #table",{"page":page,"pname":pname,"typeid":typeid,"lprice":lprice,"hprice":hprice})
}
</script>
- 运行结果