|
@@ -52,6 +52,24 @@ public final class PluginUtils {
|
|
|
// to do nothing
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * <p>
|
|
|
+ * 初始化缓存 SqlParser 注解信息
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @param mapperClass Mapper Class
|
|
|
+ */
|
|
|
+ public synchronized static void initSqlParserInfoCache(Class<?> mapperClass) {
|
|
|
+ Method[] methods = mapperClass.getDeclaredMethods();
|
|
|
+ for (Method method : methods) {
|
|
|
+ SqlParser sqlParser = method.getAnnotation(SqlParser.class);
|
|
|
+ if (null != sqlParser) {
|
|
|
+ StringBuilder sid = new StringBuilder();
|
|
|
+ sid.append(mapperClass.getName()).append(".").append(method.getName());
|
|
|
+ sqlParserInfoCache.put(sid.toString(), new SqlParserInfo(sqlParser));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -62,32 +80,7 @@ public final class PluginUtils {
|
|
|
* @return
|
|
|
*/
|
|
|
public static SqlParserInfo getSqlParserInfo(MetaObject metaObject) {
|
|
|
- try {
|
|
|
- MappedStatement ms = getMappedStatement(metaObject);
|
|
|
- String statementId = ms.getId();
|
|
|
- SqlParserInfo sqlParserInfo = sqlParserInfoCache.get(statementId);
|
|
|
- if (null != sqlParserInfo) {
|
|
|
- // 存在直接返回
|
|
|
- return sqlParserInfo;
|
|
|
- }
|
|
|
- // 初始化缓存 SqlParser 注解信息
|
|
|
- String namespace = statementId.substring(0, statementId.lastIndexOf("."));
|
|
|
- Method[] methods = Class.forName(namespace).getDeclaredMethods();
|
|
|
- for (Method method : methods) {
|
|
|
- SqlParser sqlParser = method.getAnnotation(SqlParser.class);
|
|
|
- sqlParserInfo = new SqlParserInfo();
|
|
|
- if (null != sqlParser) {
|
|
|
- sqlParserInfo.setFilter(sqlParser.filter());
|
|
|
- }
|
|
|
- StringBuilder sid = new StringBuilder();
|
|
|
- sid.append(namespace).append(".").append(method.getName());
|
|
|
- sqlParserInfoCache.put(sid.toString(), sqlParserInfo);
|
|
|
- }
|
|
|
- // 获取缓存结果
|
|
|
- return sqlParserInfoCache.get(statementId);
|
|
|
- } catch (Exception e) {
|
|
|
- throw new MybatisPlusException("获取 SqlParser 注解信息异常", e);
|
|
|
- }
|
|
|
+ return sqlParserInfoCache.get(getMappedStatement(metaObject).getId());
|
|
|
}
|
|
|
|
|
|
/**
|