상세 정보 MyBatis 사용자 정의 플러그인
공식 설명:
MyBatis는 매핑된 문장의 실행 과정 중 어느 부분에서 호출을 차단할 수 있도록 합니다.
무슨 뜻이죠?어떤 방법을 실행하기 전에 차단하고 자신의 조작을 할 수 있다. 예를 들어 다음과 같다.
1. 실행된 모든 SQL 기록(MyBatis org.apache.ibatis.executor.statement.StatementHandler의 prepare 방법을 통해 차단)
2. SQL(org.apache.ibatis.executor.Executor에서query 방법을 수정하여 차단) 등을 수정한다.
그러나 차단 방법 호출은 제한이 있습니다. MyBatis는 플러그인을 사용하여 차단할 수 있는 방법 호출은 다음과 같습니다.
플러그인을 사용하는 것은 매우 간단합니다. 인터페이스를 실현하고 차단하고자 하는 방법을 지정하여 서명하면 됩니다.
// ExamplePlugin.java
@Intercepts({@Signature(
type= Executor.class,
method = "update",
args = {MappedStatement.class,Object.class},
@Signature(
type = Executor.class, //
method = "query", // ,
args = {MappedStatement.class, Object.class , RowBounds.class, ResultHandler.class})}) // Class,
public class ExamplePlugin implements Interceptor {
public Object intercept(Invocation invocation) throws Throwable {
Object[] queryArgs = invocation.getArgs();
MappedStatement mappedStatement = (MappedStatement) queryArgs[0];
Object parameter = queryArgs[1];
BoundSql boundSql = mappedStatement.getBoundSql(parameter);
String sql = boundSql.getSql();// SQL ,
String name = invocation.getMethod().getName();
queryArgs[1] = 2; //
System.err.println(" :" + name);
return invocation.proceed();
}
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
public void setProperties(Properties properties) {
}
}
구성 파일에 플러그인 등록
<!-- mybatis-config.xml -->
<plugins>
<plugin interceptor="org.mybatis.example.ExamplePlugin">
<property name="someProperty" value="100"/>
</plugin>
</plugins>
우리가query 방법을 호출할 때, 차단기의 방법과 일치하기 때문에, 차단기 아래의intercept 방법을 실행하여 자신의 처리를 합니다.참고자료,홈페이지
http://www.mybatis.org/mybatis-3/zh/configuration.html#plugins
총결산
위에서 말한 것은 편집자가 여러분께 소개한 MyBatis 사용자 정의 플러그인입니다. 여러분께 도움이 되었으면 합니다. 궁금한 점이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 답장을 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.