package com.test.intercepter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Map;
import java.util.Properties;
import org.apache.ibatis.executor.parameter.ParameterHandler;
import org.apache.ibatis.executor.statement.StatementHandler;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Intercepts;
import org.apache.ibatis.plugin.Invocation;
import org.apache.ibatis.plugin.Plugin;
import org.apache.ibatis.plugin.Signature;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.SystemMetaObject;
import com.test.entity.Page;
@Intercepts({@Signature(type=StatementHandler.class,method="prepare",args={Connection.class})})
public class PageInterceptor implements Interceptor{
public Object intercept(Invocation invocation) throws Throwable {
// TODO Auto-generated method stub
StatementHandler handler = (StatementHandler) invocation.getTarget();
MetaObject metaObject = MetaObject.forObject(handler, SystemMetaObject.DEFAULT_OBJECT_FACTORY, SystemMetaObject.DEFAULT_OBJECT_WRAPPER_FACTORY);
MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");
//配置文件中SQL语句的ID
String id = mappedStatement.getId();
if(id.matches(".+ByPage$")){
BoundSql boundSql = handler.getBoundSql();
//原始的SQL语句
String sql = boundSql.getSql();
//查询总条数的SQL语句
String countSql = "select count(*) from ("+sql+")a";
Connection connection = (Connection) invocation.getArgs()[0];
PreparedStatement countStatement = connection.prepareStatement(countSql);
ParameterHandler parameterHandler = (ParameterHandler) metaObject.getValue("delegate.parameterHandler");
parameterHandler.setParameters(countStatement);
ResultSet rs = countStatement.executeQuery();
Map<?,?> parameter = (Map<?,?>)boundSql.getParameterObject();
Page page = (Page) parameter.get("page");
if(rs.next()) {
page.setTotalNumber(rs.getInt(1));
}
// 改造后带分页查询的SQL语句
int dbIndex = page.getDbIndex();
int dbNumber = page.getDbNumber();
// if(page.getCurrentPage()>page.getTotalPage()){
// return null;
// }
String pageSql = sql +" limit "+dbIndex+","+dbNumber;
metaObject.setValue("delegate.boundSql.sql", pageSql);
}
return invocation.proceed();
}
public Object plugin(Object arg0) {
// TODO Auto-generated method stub
return Plugin.wrap(arg0, this);
}
public void setProperties(Properties arg0) {
// TODO Auto-generated method stub
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
spring+springmvc+mybatis整合
共58个文件
jar:18个
xml:9个
class:9个
需积分: 3 9 下载量 120 浏览量
2015-05-20
15:49:10
上传
评论
收藏 7.32MB ZIP 举报
温馨提示
通过各种搜索资料终于将spring,springmvc,mybatis,mybatis事务,mybatis拦截器分页整合到一起
资源推荐
资源详情
资源评论
收起资源包目录
spring+springmvc+mybatis.zip (58个子文件)
TestSpringMVC
.project 1KB
service
com
test
service
impl
UserServiceImpl.java 1KB
IUserService.java 261B
.mymetadata 312B
src
com
simpefect
listener
ApplicationListener.java 2KB
ClientSessionManager.java 652B
controller
com
test
controller
UserContoller.java 1KB
mapper
com
test
mapper
UserMapper.java 489B
UserMapper.xml 661B
WebRoot
WEB-INF
jsp
success.jsp 839B
classes
dbconfig.properties 128B
applicationContext.xml 3KB
com
test
service
impl
UserServiceImpl.class 2KB
IUserService.class 398B
controller
UserContoller.class 3KB
mapper
UserMapper.class 654B
UserMapper.xml 661B
entity
User.class 2KB
Page.class 2KB
intercepter
PageInterceptor.class 4KB
simpefect
listener
ApplicationListener.class 3KB
ClientSessionManager.class 1KB
spring-mvc.xml 3KB
mybatis.xml 1KB
lib
jackson-core-2.5.3.jar 225KB
commons-fileupload-1.3.1.jar 67KB
mybatis-3.2.8.jar 697KB
mybatis-spring-1.2.2.jar 48KB
spring-expression-4.1.6.RELEASE.jar 253KB
spring-context-4.1.6.RELEASE.jar 1002KB
spring-beans-4.1.6.RELEASE.jar 692KB
spring-webmvc-4.1.6.RELEASE.jar 762KB
spring-tx-4.1.6.RELEASE.jar 247KB
spring-jdbc-4.1.6.RELEASE.jar 417KB
mysql-connector-java-5.1.1.jar 623KB
spring-aop-4.1.6.RELEASE.jar 351KB
jackson-databind-2.5.3.jar 1.09MB
aopalliance.jar 4KB
spring-web-4.1.6.RELEASE.jar 702KB
commons-logging-1.2.jar 60KB
jackson-annotations-2.5.3.jar 39KB
spring-core-4.1.6.RELEASE.jar 984KB
web.xml 2KB
index.jsp 829B
META-INF
MANIFEST.MF 36B
.myeclipse
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.jdt.core.prefs 330B
org.eclipse.wst.jsdt.ui.superType.name 6B
.jsdtscope 500B
config
dbconfig.properties 128B
applicationContext.xml 3KB
spring-mvc.xml 3KB
mybatis.xml 1KB
entity
com
test
entity
User.java 1KB
Page.java 2KB
.classpath 2KB
interceptor
com
test
intercepter
PageInterceptor.java 3KB
t_user.sql 1KB
共 58 条
- 1
资源评论
小马pony
- 粉丝: 11
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 老飞飞搭建基础通用数据库V19数据库.rar
- jquery.js
- 机械设计多工位ACF贴胶带&预压设备sw18可编辑非常好的设计图纸100%好用.zip
- 基于Pytorch复现Point-Transformer,用于ShapeNet数据集点云分割
- 【医学影像分析】2D超声图像的分割检测(Ultrasound Nerve Segmentation - Kaggle数据集)
- 嘎嘎香的五款神仙谷歌插件
- .arch书源导入教程.mp4
- 贪心算法介绍及代码示例讲解
- CR13SP35MSI64 Crystal 水晶报表运行组件最后版本64位
- 图像分类数据集:玉米叶是否感染分类数据集(2分类,包含训练集、验证集)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功