mybatis " />

扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

mybatis interceptor鎬庝箞鑾峰彇琛ㄥ悕

扬州沐宇科技
2024-02-19 11:12:44
mybatis

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>

扫码添加客服微信