ssm之路(18)模糊综合查询+批量删除+批量修改

记录一下我的模糊综合查询的实现过程:

controller层   ItemsController :类

@Controller
public class ItemsController {
    @Autowired
    private ItemsService itemsService;

    @RequestMapping("/queryItems")
    public ModelAndView queryItems(HttpServletRequest request, ItemsQueryVo itemsQueryVo) throws Exception {
        List itemsList = itemsService.finditemsList(itemsQueryVo);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("itemsList", itemsList);
        modelAndView.setViewName("/items/itemsList");
        return modelAndView;
    }
}

mapper层:ItemsMapperCustom :接口

public interface ItemsMapperCustom {
    public ListfinditemsList(ItemsQueryVo itemsQueryVo)throws Exception;
}

mapper层的映射文件:ItemsMapperCustom.xml




    
        
            
                items.name like '%${itemsCustom.name}%'
            
        
    
    

 

pojo层: 实体类item+实体类的拓展类itemCustom

public class Items {

    private Integer id;

    private String name;

    private Float price;

    private String pic;

    private Date createtime;

    private String detail;


//省略getter,setter
}

public class ItemsCustom extends Items {
}

service层  ItemsService接口和ItemsServiceImpl实现类:

public interface ItemsService {
    public List finditemsList(ItemsQueryVo itemsQueryVo)throws Exception;
}
@Service
public class ItemsServiceImpl implements ItemsService {
    @Autowired
    private ItemsMapperCustom itemsMapperCustom;

    @Override
    public List finditemsList(ItemsQueryVo itemsQueryVo) throws Exception {
        List list=itemsMapperCustom.finditemsList(itemsQueryVo);
        return list;
    }
}

视图层jsp页面:  itemsList.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>


    
    
    查询商品列表


<%----%>
查询条件:
商品名称
商品列表:
选择 商品名称 商品价格 生产日期 商品描述 操作
${item.name} ${item.price} ${item.detail} 修改

测试方法:  浏览器输入:http://localhost:8080/queryItems.action

写批量删除前先记录一个js动态修改表单的报错:

js的代码:


开始时我写成

 document.itemsForm.action ="/xxxxx.action";

 document.itemsForm.submit ;

我在浏览器输入的地址的是:http://localhost:8080/queryItems.action

访问到页面后,我点击按钮,浏览器地址变为:http://localhost:8080/queryItems.action#(但仍能访问我的页面),后台报错:

cann't set property 'action' of null;

这样写当然是错的了,但有的真能正常无误的运行,不知为啥,

找到原因了,如果要 document.itemsForm.action ="/xxxxx.action";,则要给form增加name属性,及改成

,这样就能运行了

后面将其改为:

 

document.getElementById(itemsForm).action ="${pageContext.request.contextPath}/queryItems.action";
        document.getElementById(itemsForm).submit();

但我又手贱犯错了,getElementById(itemsForm)里面的itemsForm要加单引号啊。每次碰到自己手贱的问题,都会推理成我代码的语法不正确,有缓存,。。。其实很多时候就是“少加了个引号,导包导入的不正确,。。。。”路还是要一步一步走啊,不然你咋知道是哪错了呢,同样的错误,这次犯了,下次就不会犯,或犯了也能回忆起上一次是整么解决的,立马就能解决,,那就是在前进,同样的难题,这次不会,通过百度会了,通过请教他人会了,这是种收获,(不会的还不虚心向他人请教,那就是不会了,还谈什么收获呢,谈谈你的失败感言好了。),下一次再遇到,你会了,能解决它了,这是种收获,更是一种进步。若还不会,那要再重做,并做好记录,保存下来,经常浏览它,温习它,熟悉它,知道你下次碰到它的时候,你会了为止。遇到事情,不要慌,小问题,有办法。路虽远,你一步一步的走,行则将至。中间不免有诸多诱惑,学会说拒绝,不逞能,实事求是,不装大佬,不懂就坦诚说我不懂,别装作你懂,不懂就多问,别人爱将,你就多问点,不爱讲,你就少问点,虚心请教,知之就说知之,不知就说不知,这是种态度。说多了,开始撸码:

 

 

批量删除的主要代码如下:

首先是sql语句:    ItemsMapperCustom.xml:

   
        delete FROM items
        
            id in
            
                #{item}
            
        
    

mapper层的接口   ItemsMapperCustom:

public interface ItemsMapperCustom {
    public void deleteitemsList(Integer[] ids)throws Exception;
}

service层的实现类   ItemsServiceImpl

   @Override
    public void deleteitemsList(Integer[] ids) throws Exception {
         itemsMapperCustom.deleteitemsList(ids);
    }

servcie的接口   ItemsService:

public interface ItemsService {
    public void deleteitemsList(Integer[] ids)throws Exception;
}

controller层的   ItemsController:

@Controller
public class ItemsController {
    @Autowired
    private ItemsService itemsService; 

    @RequestMapping("/deleteItems")
    public void deleteItems(HttpServletResponse response,Integer[] ids) throws Exception {
        System.out.println(ids);
        itemsService.deleteitemsList(ids);
        response.getWriter().write("success");
    }

视图层的jsp页面   itemsList.jsp :

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>



  <%--  --%>
    
    查询商品列表



    查询条件:
    
商品名称    
商品列表:
选择 商品名称 商品价格 生产日期 商品描述 操作
${item.name} ${item.price} ${item.detail} 修改

输入地址测试即可。

中间有几点需要注意:

1.sql语句的映射文件里:

通过多个id查询信息:传入的参数的  Integer[] ids;      collection里不能写ids,如果传入是数组,要写array,是集合就写list;改写成如下: 

 
                #{item}
            

否则会报Parameter 'ids' not found. Available parameters are [array]

因为是集合,所以也不能想当然的这样写:  delete FROM items where id in (#{ids})

 

下面是用list数组实现批量更新:

controller层  (service层的操作还没写):

  @RequestMapping("/editItemsAllSubmit")
    public String editItemsAllSubmit(HttpServletRequest request, ItemsQueryVo itemsQueryVo) throws Exception {
         //itemsService.editAllitems(itemsQueryVo);
        return "success";
    }

editItemsQuery.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>



      
    
    查询商品列表


查询条件:
商品名称    
商品列表:
商品名称 商品价格 生产日期 商品描述 操作

注意:含日期的批量提交可能会报错,因为日期的格式转换不对,有人说:我加了

 

日期转换的,,你还需要在pojo类中加入日期字段的相关注解,

现在spring的配置文件中加上转换器,applicationContext.xml:

  
        
            
                
               
            
        
    

然后加上注解:;

import java.util.Date;
public class Items {
 @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createtime;

  public Date getCreatetime() {
        return createtime;
    }

    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }
}

就能解决400错误,并且能成功跳转了。

service层的后续再写

你可能感兴趣的:(ssm之路(18)模糊综合查询+批量删除+批量修改)