手寫Mybatis外掛程式

2022-06-07 06:30:11 字數 1141 閱讀 8185

業務功能:

把乙個表按照月份分為12個,命名user_01、user_02、....user_12。

select * from user where age = #

輸入當前月份查詢的時候,自動把邏輯表名改成對應的月份表。例如輸入202005,此時需要把表名修改為

select * from user_05 where age=5

實現:

註冊外掛程式:

mybatis-config.xml新增:

外掛程式(乙個實現當前功能的簡單外掛程式):

@intercepts(),

resulthandler.class, cachekey.class, boundsql.class})

})public class querysliceinterceptor implements interceptor else

//反射獲取動態引數

string sql = boundsql.getsql();

string querysql = getquerysql(sql, parameter);

parameter = integer.valueof(string.valueof(parameter).substring(4));

list resultlist = executor.query(ms, parameter, rowbounds, resulthandler, null, pageboundsql);

return resultlist;

}@override

public object plugin(object o)

@override

public void setproperties(properties properties)

public string getquerysql(string sql, object param)

}

測試類:

public class test 

}

結果:

user(id=1, name=小明, age=5)

手寫自己的MyBatis框架 支援外掛程式

定義了乙個 intercepts 註解,目前還只能攔截executor 的方法,所以屬性只要配置方法名稱。定義interceptor 介面,是所有自定義外掛程式必須實現的介面。定義interceptorchain 容器,用來存放解析過的 在configuration 中建立executor 的時候,...

js手寫日曆外掛程式

doctype html html lang en head meta charset utf 8 meta name viewport content width device width,initial scale 1.0 title 日曆 title style table td,th sty...

mybatis 外掛程式原理

1 mybatis初始化 每個基於 mybatis 的應用都是以乙個 sqlsessionfactory 的例項為中心的。sqlsessionfactory 的例項可以通過 sqlsessionfactorybuilder 獲得。而 sqlsessionfactorybuilder 則可以從 xml...