ibatis, sqlmap, namespace 그 작은 일
4461 단어 mybatis
namespace 를 왜 사용 합 니까?
namespace 의 장점
1. sqlmap 는 더욱 우아 해 보 입 니 다.
예 를 들 어 hivestore - sqlmap. xml 에 있 는 원래 의
<select id = "hivestore.insert">
namespace 를 사용 하면
<select id = "insert">
이렇게 하면 더욱 뚜렷 하고 간결 하 다.현재 있 는 모듈 은 hivestore 이 고 insert 가 잘 아 는 표 지 는 삽입 작업 입 니 다.
2. ibatis 의 sqlmap 에서 id 와 sql 은 전역 에 저 장 된 키 쌍 이기 때 문 입 니 다.
분명히 우 리 는 한 팀 이 개발 한 프로젝트 를 보증 하지 않 았 다. 여러 사람 이 서로 다른 sqlmap 에서 xxx. yy 를 사용 하고 조사 과정 에서 dao 파일 에 깊이 들 어가 검사 해 야 한다.namespace 를 사용 하면 이러한 사건 의 발생 을 방지 할 수 있 습 니 다. sqlmap. xml 파일 에서 첫 번 째 줄 namespce 가 다른 지 확인 하면 됩 니 다.
1. namespace 를 어떻게 사용 합 니까?
설정 방식: sqlmap - config. xml 파일 에 다음 설정 항목 을 추가 합 니 다.
<setting useStatementNamespaces="true"/>
xxxx - sqlmap. xml 파일 에 다음 설정 을 추가 하면 됩 니 다.
<sqlMap namespace="xxxxxx">
namespce 의 단점
닥 친 문제?namespace 사용 후:
<sqlMap namespace="hivestore">
<select id="insert" ........
<select id="column.insert".
방법 1:. getSqlMapClient 템 플 릿 (). insert ("hivestore. insert", hivestore);실행 성공 방법 2: this. getSqlMapClient 템 플 릿 (). insert ("hivestore. column. insert", hivestoreColumn);실행 오류 가 발생 했 습 니 다. 왜 제 가 namespce 를 사용 한 후 두 번 째 방법 은 hivestore. column. insert 라 는 sqlstatement 에 지원 하 였 습 니까?
세부 사항: 방법 2 가 왜 잘못 보 고 했 는 지 에 대해 서 는 우선 ibatis 가 설정 파일 을 불 러 오기 시 작 했 습 니 다. 오류 와 관련 된 부분 코드 는 다음 과 같 습 니 다.
1.SqlMapParse.java
parser.addNodelet("/sqlMap/select", new Nodelet() {
public void process(Node node) throws Exception {
statementParser.parseGeneralStatement(node, new SelectStatement());
}
});
2.SqlMapStatementParser.java
관련 방법:
public void parseGeneralStatement(Node node, MappedStatement statement){}
키 줄:
if (state.isUseStatementNamespaces()) {
id = state.applyNamespace(id);
}
기본 값:
private boolean useStatementNamespaces = false;
3. 디 테 일 포인트:
public String applyNamespace(String id) {
String newId = id;
if (namespace != null && namespace.length() > 0 && id != null && id.indexOf('.') < 0) {
newId = namespace + "." + id;
}
return newId;
}
"id. index Of (". ") < 0 으로 인해 방법 2 오류 가 발생 했 습 니 다. 여 기 는 나타 나 지 않 습 니 다."
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.