mybatis 拦截器中获取表名
时间: 2023-07-30 09:06:12 浏览: 458
在 MyBatis 拦截器中获取表名可以通过以下步骤:
1. 在拦截器的 `intercept` 方法中获取 `MappedStatement` 对象:
```
MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
```
2. 从 `MappedStatement` 对象中获取 SQL 语句执行的信息:
```
SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType(); // SQL 语句类型
String sql = mappedStatement.getBoundSql().getSql(); // SQL 语句
```
3. 解析 SQL 语句,获取表名:
```
String tableName = null;
if (SqlCommandType.SELECT.equals(sqlCommandType)) {
tableName = SqlUtils.getSelectTableName(sql);
} else if (SqlCommandType.INSERT.equals(sqlCommandType)) {
tableName = SqlUtils.getInsertTableName(sql);
} else if (SqlCommandType.UPDATE.equals(sqlCommandType)) {
tableName = SqlUtils.getUpdateTableName(sql);
} else if (SqlCommandType.DELETE.equals(sqlCommandType)) {
tableName = SqlUtils.getDeleteTableName(sql);
}
```
其中,`SqlUtils` 是自定义的工具类,用于解析 SQL 语句并获取表名。你可以根据自己的需求实现该工具类。
阅读全文