1. 程式人生 > >mybatis java.lang.NullPointerException

mybatis java.lang.NullPointerException

package com.imooc.interceptor;

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.DefaultReflectorFactory;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.ReflectorFactory;
import org.apache.ibatis.reflection.SystemMetaObject;

import com.imooc.entity.Page;
/**
 * 分頁攔截器
 */
@Intercepts({@Signature(type=StatementHandler.class,method="prepare",args={Connection.class})})
public class PageInterceptor implements Interceptor {

private String test;

public Object intercept(Invocation invocation) throws Throwable {
StatementHandler statementHandler = (StatementHandler)invocation.getTarget();
MetaObject metaObject = MetaObject.forObject(statementHandler, SystemMetaObject.DEFAULT_OBJECT_FACTORY, SystemMetaObject.DEFAULT_OBJECT_WRAPPER_FACTORY, new DefaultReflectorFactory());
MappedStatement mappedStatement = (MappedStatement)metaObject.getValue("delegate.mappedStatement");
// 配置檔案中SQL語句的ID
String id = mappedStatement.getId();
if(id.matches(".+ByPage$")) {
BoundSql boundSql = statementHandler.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語句
String pageSql = sql + " limit " + page.getDbIndex() + "," + page.getDbNumber();
metaObject.setValue("delegate.boundSql.sql", pageSql);
}
return invocation.proceed();
}

public Object plugin(Object target) {
System.out.println(this.test);
return Plugin.wrap(target, this);
}


public void setProperties(Properties properties) {
this.test = properties.getProperty("test");
// TODO Auto-generated method stub

}

}

相關推薦

mybatis java.lang.NullPointerException

package com.imooc.interceptor; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Map; import java.

Mybatis java.lang.NullPointerException可能的解決辦法

寫在前面 在Spring MVC框架結構中,總是會遇到各種各樣的異常,而Mybatis java.lang.NullPointerException應該算是最常遇到的吧。下面介紹一下我在專案中面對這個異常的解決辦法。 Mybatis java.lang.NullPoin

java mybatis 關於中向資料庫中插入資料時,報錯java.lang.NullPointerException的問題

今天在實現向MySQL的資料庫insert一個Object資料時出現一個錯誤; org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptio

Mybatis 出現異常Error querying database. Cause: java.lang.NullPointerException

今天在自己寫一個關於springboot的小Demo時,一直出現Error querying database.  Cause: java.lang.NullPointerException的異常,前前後後仔仔細細檢查也沒找到哪裡會出現空指標的問題,在網上尋找答案又不是所描述

java.lang.NullPointerException異常

kdt tex 信息 第一次 class 一個 ans 出現 exc 空指針異常都是因為調用null對象的方法 , ,就是一個對象還沒有沒有正常初始化 就先調用它的方法比如 Object obj=null; obj.toString(); 這就會拋出 這個異常 當然

java.lang.NullPointerException

quest -s user exception size tracking uri ati lang 這個異常是常見的Java中的異常。空指針異常。並且,一般都會指出在哪兒出現空指針異常。 1、錯誤描寫敘述 嚴重:Exception occur

Java異常解決之--java.lang.NullPointerException

null 異常 bsp ray lan 判斷 常常 類型 對象 1、java.lang.NullPointerException【空指針異常】一般報java.lang.NullPointerException的原因有以下幾種 :一般常常都是你引用了一個未 new 變量 或者

An internal error occurred during: "Setup check". java.lang.NullPointerException

技術 如果 error: lin pointer poi dex 全局屬性 alt 在Eclipse的workspace下有個.metadata文件夾,Eclipse出現異常的log文件就在這個目錄下。 最近出現了這樣的錯誤:查看日誌文件發現: !ENTR

嚴重:Exception sending context initialized event to listener instance of class [myJava.MyServletContextListener] java.lang.NullPointerException

roo ext 清零 es2017 zed alt 指正 .com servlet 以上錯誤是我在自定義Servlet監聽器時遇到的,首先大致介紹一下我要實現的功能(本人剛開始學,如有錯誤,請多多指正): 為了統計網站訪問量,防止服務器重啟後,原訪問次數被清零,因此自

An internal error occurred during: "Launching MVC on Tomcat 6.x". java.lang.NullPointerException

internal gen 工作 目的 filter 文件 time cor launch 有的時候打開Myeclispe莫名奇妙的就出現了這樣的問題: An internal error occurred during: "Launching MVC on Tomcat

java.lang.NullPointerException at java.lang.ProcessBuilder.start(Unknown Source) at org.apache.hadoop.util.Shell.runCommand(Shell.java:482)

想要 fileutil acc 測試 cep .net parent int pre 1:問題出現的原因,部署好的hadoop-2.6.4進行window10操作hadoop api出現的錯誤,具體錯誤是我向hdfs上傳文件,還好點,之前解決過,這裏不敘述,這裏說一下從hd

error:org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException

poi return spring use fail err process sin mapping 問題:調用的方法在一個接口類中,但我並沒有註入那個被調用的類 解決:在UserEntity前加上@Autowired @Controller public class

java.lang.NullPointerException報錯的幾種情況

style == poi 就會 string arr 不存在 判斷 對象 java.lang.NullPointerException報錯的幾種情況: 1.字符串變量未初始化; 2.接口類型的對象沒有用具體的類初始化,比如:   List stuList ;這種情況就會報空

Maven打包時出現“Show Console View”錯誤彈出框,錯誤詳情為“An internal error has occurred. java.lang.NullPointerException”的解決方法

開開 exceptio 技術 point org ali ava src cor 今天為項目打包時出現了下面的錯誤提示: 打開Details裏面寫的是“An internal error has occurred. java.lang.NullPointerExcepti

在Servlet使用getServletContext()獲取ServletContext對象出現java.lang.NullPointerException(空指針)異常的解決辦法

是我 沒有 AS pre 代碼 erl fig post exceptio 今天遇到了一個在servlet的service方法中獲取ServletContext對象出現java.lang.NullPointerException(空指針)異常,代碼如下 //獲取Se

java.lang.NullPointerException at org.hibernate.type.LongType.next(LongType.java

exceptio 當前 image tro imp type 空指針異常 個人 分享圖片 1、為了初步解決並發造成的問題,我們通常會在實體類上聲明一個版本管理字段,並且引入的@version註解,這就就簡單實現了樂觀鎖功能; Java代碼 @Version

java.lang.NullPointerException錯誤的解決方案

都是 參考 分割線 評論 service exception com 語句 img java.lang.NullPointerException空指針異常是像我一樣新手很容易出現的問題,這個問題一般情況都是不細心的時候出現的,開始正文如下: 1、業務層面的錯誤:   a、沒

eclipse啟動錯誤:An internal error occurred during: "Initializing Java Tooling". java.lang.NullPointerException

exc str exceptio 技術分享 png 分享 error inf tool eclipse啟動錯誤:An internal error occurred during: "Initializing Java Tooling". java.lang.NullP

Android Studio遇到的錯誤:java.lang.NullPointerException及解決方法

使用Android Studio,執行Textview.settext時遇到的誤:java.lang.NullPointerException,空指標異常,如下: Caused by: java.lang.NullPointerException

mybatis java.lang.NumberFormatException: For input string: "y"

今天在做mybatis的查詢時,報了一個奇葩錯: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ##