Mybatis 之 外掛
阿新 • • 發佈:2022-02-22
外掛編寫(plugin)
步驟:
1. 編寫Interceptor的實現類:
MyFirstPlug
2. 使用@Intercepts註解完成外掛簽名
3. 將寫好的外掛註冊到全域性配置檔案中
package com.feng.config; import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.plugin.*; import java.util.Properties; /** * @Desc:完成外掛簽名: * 告訴mybatis當前外掛用來攔截哪個物件的哪個方法 * @Param: Sinature type:攔截哪個物件(四大物件) * method:物件的哪個方法 * args: 當前方法的引數列表 */ @Intercepts({ @Signature(type = StatementHandler.class, method = "parameterize", args = java.sql.Statement.class) }) public class MyFirstPlug implements Interceptor { /** * 攔截目標物件的目標方法的執行 * @param invocation * @return * @throws Throwable */ @Override public Object intercept(Invocation invocation) throws Throwable { //執行目標方法 Object proceed = invocation.proceed(); //返回執行後的返回值 return proceed; } /** * 包裝目標物件,為目標物件建立一個代理物件 * @param target * @return */ @Override public Object plugin(Object target) { //藉助Plugin的wrap方法來使用當前Interceptor包裝目標物件 Object wrap = Plugin.wrap(target, this); //返回為當前target建立的動態代理物件 return wrap; } /** * 將外掛註冊時的property屬性設定進來 * @param properties */ @Override public void setProperties(Properties properties) { System.out.println("外掛配置資訊:"+properties); String username = (String) properties.get("username"); String password = (String) properties.get("password"); } }
mybatis-config.xml
<configuration> <!-- 配置全域性外掛 --> <plugins> <plugin interceptor="com.feng.config.MyFirstPlug"> <property name="username" value="zhangsan"/> <property name="password" value="123456"/> </plugin> </plugins> </configuration>