保存客户&分页查询&Spring解决延迟加载问题
保存客户
Struts2通过模型驱动拿到封装对象,调用业务层将对象传递到持久层,持久层调用Hibernate模版将对象持久化到数据库。
持久层代码实现:
分页查询:
- 创建PageBean实体类,里面有当前页数,每页显示记录数,总记录数,总页数,每页查询到的数据集合List。
- 当前页数以及每页记录数从前端页面获取(如果为null在web层中给予一个默认值),总记录数由持久层查询行数获得,总页数由总记录数除以每页记录再数向上取值获得。
- 每页查询到的对象集合由持久层利用DetachedCriteria对象分离条件查询获得。
- 以上5个属性在业务层进行封装,在web层放入值栈。
- 前端利用to_page()函数,进行提交,改变属性,改变持久层查询到的List集合,实现分页查询。
- Spring配置OpenSessionInView过滤器,解决延迟加载问题。
PageBean:封装分页查询属性
持久层:查询需要的数据传给业务层
业务层:调用持久层,封装PageBean传给web层,
web层:调用业务层,将PageBean放入值栈
前端:通过改变currPage改变当前页数,通过改变pageSize改变每页记录数,实现分页查询功能
Spring配置OpenSessionInView过滤器,在web层开启事务,web层的操作变成持久态,从而解决延迟加载问题。
PageBean:封装分页查询属性
持久层:查询需要的数据传给业务层
业务层:调用持久层并传之以分页查询的属性,封装PageBean传给web层
web层:调用业务层,将PageBean放入值栈
前端:实现分页查询功能
1 topage函数
2 分页
<TR> <TD><SPAN id=pagelink> <DIV style="LINE-HEIGHT: 20px; HEIGHT: 20px; TEXT-ALIGN: right"> 共[<B><s:property value="totalCount"/></B>]条记录,[<B><s:property value="totalPage"/></B>]页 ,每页显示 <!-- 通过改变pageSize改变每页显示记录数 --> <select name="pageSize" onchange="to_page()"> <option value="3" <s:if test="pageSize==3">selected</s:if> >3</option> <option value="5" <s:if test="pageSize==5">selected</s:if>>5</option> <option value="10" <s:if test="pageSize==10">selected</s:if>>10</option> </select> 条 <!-- 如果currPage不等于1,则显示以下 --> <s:if test="currPage!=1"> [<A href="javascript:to_page(1)">首页</A>] [<A href="javascript:to_page(<s:property value="currPage-1"/>)">前一页</A>] </s:if> <!-- 通过a标签实现翻页跳转 --> <B> <s:iterator var="i" begin="1" end="totalPage"> <s:if test="#i == currPage"> <s:property value="#i"/> </s:if> <s:else> <a href="javascript:to_page(<s:property value="#i"/>)"><s:property value="#i"/></a> </s:else> </s:iterator> </B> <!-- 如果currPage不等于总页数,则显示下一页和尾页 --> <s:if test="currPage!=totalPage"> [<A href="javascript:to_page(<s:property value="currPage+1"/>)">后一页</A>] [<A href="javascript:to_page(<s:property value="totalPage"/>)">尾页</A>] 到 </s:if> <input type="text" size="3" id="page" name="currPage" /> 页 <input type="button" value="Go" onclick="to_page()"/> </DIV> </SPAN></TD> </TR>
Spring配置OpenSessionInView过滤器,在web层开启事务,web层的操作变成持久态,从而解决延迟加载问题。
延迟加载问题:字典表里面的