mybatis interceptor鎬庝箞鑾峰彇琛ㄥ悕
MyBatis Interceptor鏄疢yBatis鎻愪緵鐨勪竴涓満鍒讹紝鍙互鍦⊿QL璇彞鎵ц鍓嶅悗杩涜鎷︽埅鍜屽鐞嗐€傝鍦↖nterceptor涓幏鍙栬〃鍚嶏紝鍙互浣跨敤浠ヤ笅鏂规硶锛?/p>
1銆佸湪Interceptor鐨刞intercept`鏂规硶涓幏鍙朆oundSql瀵硅薄锛孊oundSql瀵硅薄鍖呭惈浜嗘墽琛岀殑SQL璇彞鍙婂弬鏁颁俊鎭€?/p>
```java
@Override
public Object intercept(Invocation invocation) throws Throwable {
MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
BoundSql boundSql = mappedStatement.getBoundSql(invocation.getArgs()[1]);
String sql = boundSql.getSql();
// 鑾峰彇琛ㄥ悕
String tableName = extractTableName(sql);
return invocation.proceed();
}
```
2銆佺紪鍐欎竴涓柟娉曟潵浠嶴QL璇彞涓彁鍙栬〃鍚嶏紝鍙互閫氳繃姝e垯琛ㄨ揪寮忕瓑鏂规硶鏉ュ疄鐜般€?/p>
```java
private String extractTableName(String sql) {
String tableName = null;
Pattern pattern = Pattern.compile("FROM\\s+([^\\s]+)\\s*|JOIN\\s+([^\\s]+)\\s*|UPDATE\\s+([^\\s]+)\\s*|INTO\\s+([^\\s]+)\\s*");
Matcher matcher = pattern.matcher(sql);
while (matcher.find()) {
tableName = matcher.group(1);
if (StringUtils.isNotBlank(tableName)) {
break;
}
}
return tableName;
}
```
3銆佸湪MyBatis閰嶇疆鏂囦欢涓厤缃甀nterceptor锛屽皢Interceptor搴旂敤鍒伴渶瑕佺殑Mapper鎴朣tatement涓娿€?/p>
```xml
```
閫氳繃浠ヤ笂姝ラ锛屽彲浠ュ湪MyBatis Interceptor涓幏鍙栨墽琛岀殑SQL璇彞锛屽苟浠庝腑鎻愬彇琛ㄥ悕銆?/p>
相关问答