1. 程式人生 > >關於我個人mybatis攔截器對於分頁的看法

關於我個人mybatis攔截器對於分頁的看法

mybatis圖片

  • 一、對於mybaits的認知
  • 二、關於mybatis的分頁
  • 三、mybatis攔截器分頁對專案各方面效率的影響
  • 總結

一、對於mybaits的認知

由於我還是一個學生,mybatis是我自學的,所以下面的話我說的可能會比較通俗點。
我在學mybatis之前已經學完了hibernate,hibernate其實是一個非常好用的框架,你只需要知道它面向的是物件,還有裡面一些開關(比如:lazy,fetch)用的好的話,基本上都是沒是沒問題啊。我們都知道oracle的分頁語句不像mysql一樣簡單,它的分頁語句非常複雜,而hibernate只要簡簡單單配置一下就好了。
既然hibernate這麼好,那我們為什麼還要學mybatis呢。因為hibernate太笨重了,每執行一項功能就要產生好多sql語句,而且它的sql語句還複雜,會大大降低整個專案的執行效率,雖然hibernate也支援自己寫sql語句,而這顯然不是他所想要的。這是,我們就會想到mybatis,mybatis所有的sql語句都是自己寫的,可別小巧它,當資料量很大的時候,一個好的sql語句的重要性,這也是為什麼現在市場上很多公司都青睞mybatis的一個主要原因。

二、關於mybatis的分頁

想到oracle的分頁語句可能很多人都會覺的心理髮慌,太長了,記不住,而且也不會用。那怎麼辦?
別擔心,mybatis有一個攔截器,你可以自己寫一個類,然後去實現Interceptor介面就可以了。原理是什麼?原來我們在執行sql語句之前會產生一個Statement物件,關鍵sql語句是在這個物件之前產生的,也就是說我們在Statement物件產生之前攔截下來,將我們sql語句進行分頁操作,這樣我們只要寫一個oracle的分頁語句,以後就可以重複利用。而且,攔截器寫的好的話是多功能的,只要不同資料庫的分頁語句都寫好,想用那個資料庫語句是要在mybatis的配置檔案裡面配一下就好(利用到反射)。這樣以後就可以不用擔心各個資料庫平臺的分頁語句了。

三、mybatis攔截器分頁對專案各方面效率的影響

你要是利用攔截器只單單做分頁操作,那我覺的意義是不怎麼大,你想想看你寫那麼大一個類不辛苦嗎,那我還不如直接在sql配置檔案裡面寫分頁語句,看起來跟簡潔,所以我想說的是你要把攔截器儘可能的多封裝一些內容,如總記錄數、總頁數之類的。這樣service層和controller層可以少寫一些程式碼,我認為你甚至可以吧將jsp的連結都封裝了,這樣controller層和jsp也面的人員來說工作量會少了非常多(你想想每個需要jsp的重複有繁瑣的分頁程式碼是多麼可怕的一件事)。
但是有一個地方你必須注意到,如果你用到mybatis二級快取,你就不該將分頁連結進行封裝,不讓快取會出現異常,它無法快取分頁連結。所以這時候你最好的方法是不要利用到攔截器分頁,直接用sql語句分頁,而且其實這樣也更高效。我說了,攔截器也會用到反射,反射這個東西要適當用,多用還降低專案的執行效率的。

總結

最後,我想總結一下,雖然分頁語句比較難學(比如oracle),都是最好還是去學一些,攔截器這個東西,適當用,不能以為的說我要分頁,我就要用到攔截器,我們應該考慮的是攔截器對專案全程的影響。利,則用;差,則棄。

smirk小澤
2017 年 02月16日

相關推薦

關於個人mybatis攔截對於看法

一、對於mybaits的認知 二、關於mybatis的分頁 三、mybatis攔截器分頁對專案各方面效率的影響 總結 一、對於mybaits的認知 由於我還是一個學生,mybatis是我自學的,所以下面的話我說的可能會比較通俗點。 我在

利用Mybatis攔截實現查詢

手寫Mybatis攔截器 版本 Spring Boot 2.0.3.RELEASE Mybatis自定義攔截器 如果有閱讀過我之前一篇部落格 Hibernate 重新整理上下文 的朋友應該還記得 Hibernate 的上下文中可以新增自定義的事件監聽器。當初是為

myBatis學習筆記(10)——使用攔截實現查詢

條件 iba execute rri itl alias property gen func 1. Page package com.sm.model; import java.util.List; public class Page<T&g

java 工具類+Mybatis攔截SQL實現

轉載!一個比較好的分頁! /**  * 對Page<E>結果進行包裝  * <p/>  * 新增分頁的多項屬性,主要參考:http://bbs.csdn.net/topics/360010907  * @version 3.3.0

Mybatis攔截之資料許可權過濾與整合

解決方案之改SQL 原sql SELECT a.id AS "id", a.NAME AS "name", a.sex_cd AS "sexCd", a.org_id AS "orgId", a.STATUS AS "status", a.create_org_id AS "createOrgId"

Mybatis攔截

使用攔截器 Web開發中我們經常會碰到分頁操作,一個專案中或許有多處使用到分頁,這時如果Java後臺使用MyBatis作為持久層,我們就可以使用MyBatis的攔截器功能來完成整個專案中多處的分頁操作,減少程式碼的冗餘。 攔截器程式碼: //攔截StatementHandler中引數型別

MyBatis攔截原理及PageHelper外掛教學

閒來無事,特地整理了一下MyBatis攔截器實現分頁的原理。 地球人應該都知道要利用JDBC對資料庫進行操作,就需要一個statement物件,MyBatis也是如此。MyBatis在執行sql語句前會產生一個包含sql語句的Statement物件,而且對應的

MyBatis攔截自定義外掛實現

MyBaits是一個開源的優秀的持久層框架,SQL語句與程式碼分離,面向配置的程式設計,良好支援複雜資料對映,動態SQL;MyBatis 是支援定製化 SQL、儲存過程以及高階對映的優秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以對配置和原

mybatis攔截

mybatis提供了攔截器外掛用來處理被攔截的方法的某些邏輯.下面會通過建立8張表,當用戶註冊時,根據對手機號取餘數資料入不同的庫. 建表 引入外掛 <property name="plugins"> <array

MyBatis攔截:給參數對象屬性賦值

是否 tle dsta ref 截器 throws dev ndt pri 1 package com.development; 2 3 import java.lang.reflect.InvocationTargetException; 4 impo

SpringMVC+Mybatis實現的Mysql數據查詢

space round nbsp sub hid append app return utf   周末這天手癢,正好沒事幹,想著寫一個分頁的例子出來給大家分享一下。   這個案例分前端和後臺兩部分,前端使用面向對象的方式寫的,裏面用到了一些回調函數和事件代理,有興趣的朋友可

通過spring抽象路由數據源+MyBatis攔截實現數據庫自動讀寫分離

註入 兩個 -- 事情 rem 使用註解 connect key值 -m 前言 之前使用的讀寫分離的方案是在mybatis中配置兩個數據源,然後生成兩個不同的SqlSessionTemplate然後手動去識別執行sql語句是操作主庫還是從庫。如下圖所示: 好處是,你

Maven+Mybatis+Spring+SpringMVC實現查詢

XML lec www tails odin build 效果 servle lpad 轉載:http://www.cnblogs.com/zhangtan/p/5846955.html 一、項目搭建 關於項目搭建,小寶鴿以前寫過一篇Spirng+SpringMVC+Ma

7 Django文章

src http 技術分享 alt .com bsp 9.png image png 1 2 3 4 5 7 Django分頁器文章分頁

mybatis攔截實現查看sql執行效率

nth 內部 設置 work check sel nts mage view package cc.zeelan.common.utils; import java.lang.reflect.Field; import java.sql.Statement; impor

rest-framework框架 -- 解析、路由

表示 color 組件 elf post data ... rest art rmp 解析器 :reqest.data取值的時候才執行 對請求的數據進行解析:是針對請求體進行解析的。表示服務器可以解析的數據格式的種類 django中的發送請求 #如果是這樣的格式發送的數據

MyBatis攔截打印不帶問號的完整sql語句方法

pac con his cee != Coding word sqli statement ?1/* Preparing: SELECT * FROM tb_user WHERE id = ? AND user_name = ? <br> 目標是打印:SE

用DataTables實現服務

說明 分頁 scrip ajax query .html detail www. archive 推薦下,H-ui.admin 模版裏面使用了DataTables,而且把常用功能都給實現的很完整了,推薦去參考H-ui的模版源碼參考! 分享幾篇有價值的文章: DataTabl

Mybatis攔截(插件實現原理)

通過 source hand page fault PE ace sign targe 在mybatis的mybatis.cfg.xml中插入: <plugins> <plugin inter

MyBatis攔截原理探究

ash tsa nta turn 你在 asp caching tde 其中 前言: MyBatis攔截器介紹 MyBatis提供了一種插件(plugin)的功能,雖然叫做插件,但其實這是攔截器功能。那麽攔截器攔截MyBatis中的哪些內容呢? 我們進入官網看一看: MyB