【SpringMVC整合MyBatis】案例驱动-包装类型pojo参数绑定

包装类型pojo参数绑定

1.需求
商品查询controller方法中实现商品查询条件传入。

2.实现方法
第一种方法:在形参中 添加HttpServletRequest request参数,通过request接收查询条件参数。
第二种方法:在形参中让包装类型的pojo接收查询条件参数。
分析:
页面传参数的特点:复杂,多样性。条件包括:用户账号、商品编号、订单信息......
如果将用户账号、商品编号、订单信息等放在简单pojo(属性是简单类型)中,pojo类属性比较多,比较乱。
建议使用包装类型的pojo,pojo中属性是pojo。

3.页面参数和controller方法形参定义

页面参数:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>查询商品列表</title>
</head>
<body> 
<form action="${pageContext.request.contextPath }/items/queryItem.action" method="post">
查询条件:
<table width="100%" border=1>
<tr>
<td>商品名称:<input name="itemsCustom.name"/></td>
<td><input type="submit" value="查询"/></td>
</tr>
</table>
商品列表:
<table width="100%" border=1>
<tr>
	<td>商品名称</td>
	<td>商品价格</td>
	<td>生产日期</td>
	<td>商品描述</td>
	<td>操作</td>
</tr>
<c:forEach items="${itemsList }" var="item">
<tr>
	<td>${item.name }</td>
	<td>${item.price }</td>
	<td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
	<td>${item.detail }</td>
	
	<td><a href="${pageContext.request.contextPath }/items/editItems.action?id=${item.id}">修改</a></td>


</tr>
</c:forEach>


</table>
</form>
</body>


</html>

可以看到,我们的查询条件使用的是属性.的方式(如果再包pojo,就再点....)
商品名称:<input name="itemsCustom.name" />
注意:itemsCustom和包装pojo中的属性一致即可。

controller方法形参和代码:
//商品查询列表
	//@RequestMapping实现 对queryItems方法和url进行映射,一个方法对应一个url
	//一般建议将url和方法写成一样
	@RequestMapping("/queryItems")
	public ModelAndView queryItems(HttpServletRequest request,ItemsQueryVo itemsQueryVo)throws Exception{
		
		//测试forword后request是否可以共享
		System.out.println("id="+request.getParameter("id"));
		
		//调用Service查找数据库,查询商品列表,这里使用静态数据模拟
		List<ItemsCustom> itemsList=itemsService.findItemsList(itemsQueryVo);
		
		//返回ModelAndView
		ModelAndView modelAndView=new ModelAndView();
		//相当于request的setAttribut,在jsp页面中通过这个来取数据
		modelAndView.addObject("itemsList",itemsList);
		
		//指定视图
		//下边的路径,如果在视图解析器中配置jsp的路径前缀和后缀,修改为items/itemsList
		//modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp")
		//下边的路径配置就可以不在程序中指定jsp路径的前缀和后缀
		modelAndView.setViewName("items/itemsList");


		return modelAndView;
	}

ItemsQueryVo.java:
package cn.edu.hpu.ssm.po;

//商品查询包装对象
public class ItemsQueryVo {


	//商品信息包装
	private Items items;
	
	//为了系统可拓展性,对原始生成的PO进行拓展
	private ItemsCustom itemsCustom;
	//set和get方法忽略
}

其中items:
package cn.edu.hpu.ssm.po;

import java.util.Date;


public class Items {
    private Integer id;


    private String name;


    private Float price;


    private String pic;


    private Date createtime;


    private String detail;
    //set和get方法忽略
}

itemCustom继承了Items,是Items的子类,里面增加了Items的拓展属性。

调试:

输入电视机点击查询,


测试结果如图


说明查询成功!

转载请注明出处:http://blog.csdn.net/acmman/article/details/47417797

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值