ibatis, sqlmap, namespace 그 작은 일

4461 단어 mybatis
0309 yt 에 우수한 프로그래머 로 전재 하 다
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 오류 가 발생 했 습 니 다. 여 기 는 나타 나 지 않 습 니 다."

좋은 웹페이지 즐겨찾기