保存客户

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>
&nbsp;&nbsp; <!-- 通过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>
&nbsp;&nbsp;
<!-- 如果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层的操作变成持久态,从而解决延迟加载问题。

延迟加载问题:字典表里面的

三 保存客户&分页查询&Spring解决延迟加载问题的更多相关文章

  1. 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法

    spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...

  2. Mysql系列(五)—— 分页查询及问题优化

    一.用法 在Mysql中分页查询使用关键字limit.limit的语法如下: SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15 limit关键字带有 ...

  3. 简单分页查询(web基础学习笔记十三)

    一.建立资源文件和工具类 1.1 .database.properties jdbc.driver_class=oracle.jdbc.driver.OracleDriver jdbc.connect ...

  4. Oracle子查询相关内容(包含TOP-N查询和分页查询)

    本节介绍Oracle子查询的相关内容: 实例用到的数据为oracle中scott用户下的emp员工表,dept部门表,数据如下: 一.子查询 1.概念:嵌入在一个查询中的另一个查询语句,也就是说一个查 ...

  5. Spring data JPA 理解(默认查询 自定义查询 分页查询)及no session 三种处理方法

    简介:Spring Data JPA 其实就是JDK方式(还有一种cglib的方式需要Class)的动态代理 (需要一个接口 有一大堆接口最上边的是Repository接口来自org.springfr ...

  6. 三 Spring对于延迟加载问题的解决

    Spring提供了延迟加载问题的解决方法 什么是延迟加载? 延迟加载:lazy(懒加载) 执行到该行代码的时候不会发送语句,真正使用这个对象的属性的时候才会发送sql语句进行查询. 类级别延迟加载:指 ...

  7. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

  8. EasyUi+Spring Data 实现按条件分页查询

    Spring data 介绍 Spring data 出现目的 为了简化.统一 持久层 各种实现技术 API ,所以 spring data 提供一套标准 API 和 不同持久层整合技术实现 . 自己 ...

  9. Django 分页查询并返回jsons数据,中文乱码解决方法

    Django 分页查询并返回jsons数据,中文乱码解决方法 一.引子 Django 分页查询并返回 json ,需要将返回的 queryset 序列化, demo 如下: # coding=UTF- ...

随机推荐

  1. 「AT2381 [AGC015C] Nuske vs Phantom Thnook」

    题目大意 给出一个01矩阵,这个矩阵有一个特殊的性质: 对于任意两个 \(1\) 之间最多只有 \(1\) 条由 \(1\) 构成的路径.每次询问给出一个矩形范围,查询在这个范围内的联通快个数. 分析 ...

  2. 【JavaWeb】导入Excel并进行校验

    一.需要实现的目标 1.界面编写 2.导入表读取表名,进行校验,后台匹配(判断此表的名称是否能够模糊匹配上) 3.确定表存在,读取其中的数据,暂存 4.正则表达式数据校验(判断是否已存在,数据是否符合 ...

  3. 【Javaweb】Servlet的xml和注解配置

    1.xml <%@ page language="java" contentType="text/html;" %> <!DOCTYPE ht ...

  4. Python - 模块中的"if __name__ == '__main__':"

    1.1 如果导入的模块除了定义函数之外还中有可以执行代码,那么Python解释器在导入这个模块时就会执行这些代码. module1.py: def foo(): print('module 1') f ...

  5. 腾讯云 docker 镜像 dotnet/core sdk aspnet

    ccr.ccs.tencentyun.com/mcr.microsoft.com/dotnetcoresdk  = mcr.microsoft.com/dotnet/core/sdk  => 3 ...

  6. BugkuCTF解题Web基础(一)

    Web2 打开链接看见一张动图,猜测flag应该就在网页前端源码里面 没有问题 计算器 典型的修改前端代码题目,题目让你计算结果,但只能填写一位数字. f12打开控制台,改代码maxlength we ...

  7. nginx的负载介绍

    指定上游服务器的upstream与server指令 指令介绍 Syntax: upstream name { ... } Default: — Context: http Syntax: server ...

  8. Python基础-4 运算符

    运算符 运算符:以1 + 2为例,1和2被称为操作数,"+" 称为运算符. Python语言支持以下类型的运算符: 算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 ...

  9. c++拷贝构造函数(翁恺c++公开课[26-27]学习笔记)

    这节课在p26.拷贝构造中讲的很清楚,建议大家耐心的去看下. 什么时候会发生拷贝构造: 对象之间的初始化赋值 使用对象作为变量进行函数传参(通常使用引用来传参从而减去不必要的拷贝构造,提高效率和代码健 ...

  10. free to monitor your sqlserver easy and safe and ...

    Unlike AWR in Oracle, Sqlserver does not have offical way to make history performance information fo ...