【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

时间: 2024-09-30 21:30:26

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

SpringMVC整合mybatis实例代码_java

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis . 一.逆向工程生成基础信息 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis G

【SpringMVC整合MyBatis】springmvc和struts2的区别

springmvc和struts2的区别  1.springmvc基于方法开发的,struts2基于类开发的. springmvc将url和controller方法映射.映射成功后springmvc生成一个Handler对象,对象中只包括了一个method.方法执行结束,形参数据销毁. struts2的action类中的所有方法用的都是action类中的成员变量,一旦方法变得很多的时候,我们就会不知道action类中那么多成员变量是给那个方法去使用的.十分混乱. 但是springmvc的所有参数

【SpringMVC整合MyBatis】商品查询工程框架配置

mybatis和spring进行整合,来编写一个商品查询的工程. 一.整合dao 1.sqlMapConfig.xml mybatis自己的配置文件---sqlMapConfig.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://m

【SpringMVC整合MyBatis】整合思路与工程结构

springmvc和mybatis整合 1.需求 使用springmvc和mybatis完成商品列表查询. 2.整合思路 springmvc+mybaits的系统架构: 如图 第一步:整合dao层mybatis和spring整合,通过spring管理mapper接口.使用mapper的扫描器自动扫描mapper接口在spring中进行注册. 第二步:整合service层通过spring管理 service接口.使用配置方式将service接口配置在spring配置文件中.实现事务控制. 第三步:

【SpringMVC整合MyBatis】提供学习参考的项目源码

最近很多博友私信向我索要此开发专栏的源代码,为了发挥开源精神,我决定将<MyBatis+SpringMVC>专栏所有源代码工程公布给大家,供大家学习参考! 共享的源代码分别是,MyBatis单独的工程,SpringMVC单独的工程,Spring与MyBatis整合的工程,SpringMVC与MyBatis整合的工程.另外感谢光临博客,祝大家学习愉快 源代码链接地址:http://download.csdn.net/detail/u013517797/9031455

【SpringMVC整合MyBatis】spring参数绑定

参数绑定 1.spring参数绑定过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上. springmvc中,接收页面提交的数据是通过方法形参来接收.而不是在controller类定义成员变更接收!!!! 2.默认支持的类型 直接在controller方法形参上定义下边类型的对象,就可以使用这些对象.在参数绑定过程中,如果遇到下边类型直接进行绑定. (1)HttpServletRequest 通过request对象获取请求信息

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

集合类型绑定 1.数组绑定 1.1需求 商品批量删除,用户在页面选择多个商品,批量删除. 1.2表现层实现 关键:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商品id. controller方法定义: //批量删除商品的信息 //批量删除商品的信息 @RequestMapping("/deleteItems") public String deleteItems(int[] items_id)throws Exception{ /

【SpringMVC整合MyBatis】数据回显

数据回显 1.什么数据回显 提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面. 2.pojo数据回显方法 2.1springmvc默认对pojo数据进行回显. pojo数据传入controller方法后,springmvc自动将pojo数据放到request域,key等于pojo类型(首字母小写) 说白了就是items类 public class Items { private Integer id; private String name; private Float price;

【SpringMVC整合MyBatis】validation校验-商品修改校验

springmvc校验 1.校验理解 项目中,通常使用较多是前端的校验,比如页面中js校验.对于安全要求较高点建议在服务端进行校验. 服务端校验:控制层controller:校验页面请求的参数的合法性.在服务端控制层controller校验,不区分客户端类型(浏览器.手机客户端.远程调用)业务层service(使用较多):主要校验关键业务参数,仅限于service接口中使用的参数.持久层dao:一般是不校验的. 2.springmvc校验需求 springmvc使用hibernate的校验框架v