没有合适的资源?快使用搜索试试~ 我知道了~
mybatis分页拦截器(自动封装版)剖析.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 126 浏览量
2022-06-24
09:34:39
上传
评论
收藏 585KB PDF 举报
温馨提示
试读
22页
mybatis分页拦截器(自动封装版)剖析.pdfmybatis分页拦截器(自动封装版)剖析.pdfmybatis分页拦截器(自动封装版)剖析.pdfmybatis分页拦截器(自动封装版)剖析.pdfmybatis分页拦截器(自动封装版)剖析.pdfmybatis分页拦截器(自动封装版)剖析.pdf
资源详情
资源评论
资源推荐
近期由于工作需要,想要开发一版能够满足多数人员使用的
合自己的一些理解,开发出了以下一版简单的代码。
mybatis
分页拦截器,在网上查找了很多资料并结
起初想要遵循江湖惯例,通过各个层级间传递分页参数来实现目标,但开发过程中发现这样针对已开发好的代 码影响较大(需要修
改前端到后端的所有代码),成本较高。然后在此基础上提升了目标
1
降低业务代码侵入性。
2
、减少原有代码的修改。
3
、减少调用人员开发量。
虽然最终版本在初次配置使用时会有一些繁琐,但后续扩展非常有优势。废话少说,上配置过程和代码。
1
、将
java
文件放置到某个文件夹下
2
、 添加
maven
依赖
mybatis
3
、配置
spring mybatis
咅
E
分。
4
、根据需要修改
spring-mybatis
文件。
5
、
Map per
文件中配置以”
ForPage
”结尾的查询,如
vselect id="selectByTableNameForPage" resultMap="BaseResultMap">
select
disti net t.*
from table t
group by t.id
</select>
5
、
jsp
页面引入
<c:import url="/page/page.jsp"/>
主要是拦截器部分,可自行在内部资源库中搜索或在网上搜索
java
代码
分页信息实体
*
分页信息
*/
public class PageBea n {
private int DEF_PAGE_VIEW_SIZE = 15;
/**
当前页
*/
private int pageNo = 1;
/**
当前页显示记录条数
private int pageSize;
/**
取得查询总记录数
*/
private int totalRecord;
/***
总页数
**/
private int totalPage;
private String acti on Url;
*/
private Map<Stri ng. String
〉
params;
public Stri ng getActio nUrl() { return actionUrl;
}
public void setAct ionU rl(Stri ng actionUrl) { this.actio nUrl = actionUrl;
}
public Map<Stri ng. String
〉
getParams() { return params;
}
public void setParams(Map<Stri ng. String
〉
params) { this.params = params;
}
* (
空
)
*/
public PageBea n() {
this.pageNo = 1;
this.pageSize = DEF_PAGE_VIEW_SIZE;
/**
根据当前显示页与每页显示记录数设置查询信息初始对象
* @param pageNo
当前显示页号
* @param pageSize
当前页显示记录条数
*/
public PageBea n(i nt pageNo, int pageSize) {
this.pageNo = (pageNo <= 0) ? 1 : pageNo;
this.pageSize = (pageSize <= 0) ? DEF_PAGE_VIEW_SIZE : pageSize; }
*
取得当前显示页号
*
* @return
当前显示页号
*/
public in t getPageNo() {
retur n (pageNo <= 0) ? 1 : pageNo;
*
设置当前页
*
* @param pageNo
当前页
*/
public void setPageNo(i nt pageNo) { this.pageNo = pageNo;
}
*
取得当前显示页号最多显示条数
*
* @return
当前显示页号最多显示条数
*/
public int getPageSize() {
return (pageSize <= 0) ? DEF_PAGE_VIEW_SIZE : pageSize;
}
*
设置当前页显示记录条数
*
* @param pageSize
当前页显示记录条数
*/
public void setPageSize(i nt pageSize) { this.pageSize = pageSize;
}
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(i nt totalRecord) {
this.totalRecord = totalRecord;
//
在设置总页数的时候计算出对应的总页数, 在下面的三目运算中加法拥有更高的优先级,
不加括号。
int totalPage = totalRecord % pageSize == 0 ? totalRecord / pageSize
:totalRecord / pageSize + 1;
this.setTotalPage(totalPage);
}
public int getTotalPage()
{ return this.totalPage;
}
public void setTotalPage(i nt totalPage) { this.totalPage = totalPage;
所以最后可以
分页信息操作帮助类,用于贯穿单次请求的各个层级
* PageBean
操作帮助类
*/
public class PageBea nU tils {
//
定义一个当前线程对象,处于该主线程内的所有类均可调用该对象中的
public static ThreadLocal<PageBea n> local = new ThreadLocal<PageBea n>();
pagebean
public static PageBea n getPageBea n() {
PageBea n pageBea n = local.get();
if (pageBea n == nu II) {
pageBea n = new PageBea n();
}
retur n pageBea n;
}
public static void setPageBea n(PageBea n pageBea n) { local.set(pageBea n);
}
}
Controller
拦截器,用于在执行前后封装或获取分页信息
import com.xx.xx.util.Stri ngUtils;
import org.spri ngframework.web.servlet.ModelA ndView;
import org.spri ngframework.web.servlet.ha ndler.Ha ndlerl nterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResp on se;
import java.util.E nu merati on;
import java.util.HashMap;
import java.util.Map;
*
分页自动封装拦截
,
在
controller
执行前后对
PageBean
进行读取和设置
*/
public class PageSpri ngMVC In terceptor exte nds Han dlerI nterceptorAdapter {
* preHandle
方法是进行处理器拦截用的,顾名思义,该方法将在
Controller
处理之前进行调用,
SpringMVC
中
的
Interceptor
拦截器是链式的,可以同时存在
*
多个
Interceptor
,然后
SpringMVC
会根据声明的前后顺序一个接一个的执行,而且所有的
Interceptor
中的
剩余21页未读,继续阅读
a66889999
- 粉丝: 35
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0