import org.apache.ibatis.reflection.DefaultReflectorFactory; //导入依赖的package包/类

public Object intercept(Invocation invocation) throws Throwable {

StatementHandler statementHandler = (StatementHandler)invocation.getTarget();

MetaObject metaStatementHandler = MetaObject.forObject(statementHandler, new DefaultObjectFactory(), new DefaultObjectWrapperFactory(), new DefaultReflectorFactory());

RowBounds rowBounds = (RowBounds)metaStatementHandler.getValue("delegate.rowBounds");

if(rowBounds == null || rowBounds == RowBounds.DEFAULT){

return invocation.proceed();

}

if(dialect == null){

Configuration configuration = (Configuration) metaStatementHandler.getValue("delegate.configuration");

Dialect.Type databaseType = null;

String d = configuration.getVariables().getProperty("dialect");

if(d == null || d.trim().equals("")){

throw new IllegalStateException("No property named with 'dialect' defined in mybatis configuration xml file.");

}

try {

databaseType = Dialect.Type.valueOf(d);

} catch (Exception e) {

throw new IllegalStateException(String.format("No such dialect enum defined in class %s.", Dialect.Type.class));

}

switch (databaseType) {

case MYSQL: // MySQL分页

dialect = new MySQLDialect();

break;

case ORACLE: // Oracle分页

dialect = new OracleDialect();

break;

}

if(dialect == null){

throw new IllegalStateException(String.format("No %s dialect found!", databaseType));

}

}

String originalSql = metaStatementHandler.getValue("delegate.boundSql.sql").toString();

metaStatementHandler.setValue("delegate.boundSql.sql", dialect.getLimitSql(originalSql, rowBounds.getOffset(), rowBounds.getLimit()));

metaStatementHandler.setValue("delegate.rowBounds.offset", RowBounds.NO_ROW_OFFSET);

metaStatementHandler.setValue("delegate.rowBounds.limit", RowBounds.NO_ROW_LIMIT);

return invocation.proceed();

}

java reflector_Java DefaultReflectorFactory类代码示例相关推荐

  1. java dataconvert_Java DateConverter类代码示例

    import org.apache.commons.beanutils.converters.DateConverter; //导入依赖的package包/类 /** * Register array ...

  2. java parseexception_Java ParseException类代码示例

    import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException; //导入依赖的package包/类 @Overri ...

  3. java link_Java Link类代码示例

    import org.nodes.Link; //导入依赖的package包/类 public static double sizeBetaCopying(DGraph graph, DGraph s ...

  4. java bar_Java Bar类代码示例

    import com.db.chart.model.Bar; //导入依赖的package包/类 @Override protected void onCreate(Bundle savedInsta ...

  5. java backoff_Java BackOff类代码示例

    import org.apache.beam.sdk.util.BackOff; //导入依赖的package包/类 /** * Writes a batch of mutations to Clou ...

  6. java widget_Java FavoritesWidget类代码示例

    import com.google.gwt.sample.dynatablerf.client.widgets.FavoritesWidget; //导入依赖的package包/类 /** * Thi ...

  7. java direction_Java Direction类代码示例

    import android.support.test.uiautomator.Direction; //导入依赖的package包/类 /** * Navigates through the foc ...

  8. java plugin_Java Plugin类代码示例

    import org.apache.logging.log4j.core.config.plugins.Plugin; //导入依赖的package包/类 /** * @since 2.1 */ pu ...

  9. java jsonresult_Java JsonResult类代码示例

    import eu.socialsensor.framework.client.search.visual.JsonResultSet.JsonResult; //导入依赖的package包/类 @O ...

  10. postgresql java demo_Java PostgreSQL9Dialect类代码示例

    import org.hibernate.dialect.PostgreSQL9Dialect; //导入依赖的package包/类 private void addDialects(Strategy ...

最新文章

  1. 一本冷门书:以色列闪盘之父的创业故事
  2. 《PhoneGap精粹:构建跨平台的移动App》——1.10节PhoneGap资源
  3. mysql更新记录删除_mysql 插入-更新-删除
  4. Node与apidoc的邂逅——NodeJS Restful 的API文档生成
  5. RSA算法原理——(3)RSA加解密过程及公式论证
  6. 走近NAP功能 全面了解Vista系统安全机制
  7. oracle存储过程行转列,oracle 存储过程-动态行转列,解决。
  8. 字节序转换 oracle,Oracle10g同字节序跨平台迁移
  9. bzoj1180: [CROATIAN2009]OTOCI
  10. 【elasticsearch】Elasticsearch : alias数据类型
  11. KETTLE初学者使用教程
  12. 获取POM.XML依赖的JAR包
  13. C# DevExpress组件 - ChartControl图表控件
  14. Excel 转置分组时如何保留没有对应数据的空组
  15. 超全整理:程序员都在用什么工具?
  16. 计算机专业考研2021,2021考研:计算机考研方向,了解一下
  17. java随机生成随机整数_java生成随机整数
  18. android10全面屏手势 操作图,丨系统设计丨ZUI 10加入更多全面屏手势
  19. 旭锋科技制造信息管理系统
  20. 清华大学计算机系2016名单,关于电子系2016 级、2017 级本科生分流至微纳电子系学生名单公示...

热门文章

  1. .net中哈希表的使用 Hashtable
  2. 看到大家在讨论阿拉伯数字-》汉字数字的转换,拿出我去年写的C版本
  3. 【笔记】gradle命令行运行任务如何设置代理模式
  4. JVM - 对象访问
  5. fdisk 创建和维护磁盘分区命令(MBR分区方案)
  6. 计算机单机游戏c0005错误,堡垒之夜Epic Games Launcher错误怎么办错误解决方法介绍...
  7. java 整形数据类型_3.2Java基本数据类型之整型
  8. esp8266一键安装arduino板_STM32 与 Arduino
  9. jenkins war包_Jenkins 集成postman 自动化运行接口测试用例
  10. python百度关键词自动提交订单_百度链接提交-主动推送Python版