作者:一樂樂
歡迎大家來一樂樂的部落格園
歡迎大家來一樂樂的部落格園
## 一、外掛介紹【動態代理】
1、外掛【動態代理】:mybatis 允許在已經對映的語句的執行過程的某個時機進行攔截增強的機制。
2、mybatis中的元件動態代理的運用:
MyBatis 在四大元件物件的建立過程中,都會有外掛進行呼叫執行。
我們可以利用動態機制對目標物件實施攔截增強操作,也就是在目標物件執行目標方法之前進行攔截增強的效果。
- Excutor(update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
- Parameter(update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
- RestultSetHandler(handleResultSets, handleOutputParameters)
- StatementHandler(prepare, parameterize, batch, update, query)
3、外掛開發步驟:
(1)編寫外掛實現Intercetor介面,並使用@Intercepts 註解完成外掛簽名
(2)在全域性配置檔案中使用 元素註冊外掛
//標註對哪個元件的哪個方法做攔截增強
//對元件ResultSetHandler中的handleResultSets(Statement st)方法進行攔截增強
@Intercepts({@Signature(
type= ResultSetHandler.class ,//
method = "handleResultSets",//
args = {Statement.class})})//
public class DemoIntercetor implements Interceptor{
//如何增強
@Override
public Object intercept(Invocation invocation) throws Throwable {
System.out.println("攔截增強啦");
return invocation.proceed();//放行
}
}
<!--全域性配置檔案-->
<!-- 註冊攔截器 -->
<plugins>
<plugin interceptor="com.shan.mybatis.plugin.DemoIntercetor"></plugin>
</plugins>
二、MyBatis 分頁外掛-PageHelper
1、依賴:
- jsqlparser.jar
- pagehelper.jar
2、配置,在全域性對映檔案配置分頁外掛:
<!-- 全域性對映檔案 -->
<!-- 配置外掛 -->
<plugins>
<!-- com.github.pagehelper為PageHelper類所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置引數,後面會有所有的引數介紹 -->
<property name="helperDialect" value="mysql" />
</plugin>
</plugins>
■ 配置完成,只需要在對映檔案書寫查詢結果集的元素,然後測試的時候新增上:PageHelper.startPage(3, 3); 就實現了分頁效果
//mapper介面
public interface EmployeeMapper {
List<Employee> queryList();
}
<!-- 對映檔案 -->
<select id="queryList" resultType="Employee">
select id, name, sn, salary from employee
</select>
//測試
@Test
public void testPagePlugin() throws Exception {
EmployeeMapper employeeMapper = MyBatisUtil.getMapper(EmployeeMapper.class);
PageHelper.startPage(3, 3);
List<Employee> emps = employeeMapper.queryList();
for (Employee employee : emps) {
System.out.println(employee);
}
System.out.println("============================================================");
//測試分頁外掛的介面PageInfo,好比是我們的PageResult
PageInfo pageInfo = new PageInfo(emps);
System.out.println(pageInfo.getTotal());
System.out.println(pageInfo.getList());
}
● 文章來源於:一樂樂的部落格園
● 轉載請註明出處