2016-12-06 2 views
0

mybatis를 사용하여 DB2에 연결하려고합니다. 내 문제는 mybatis-config에서 사용중인 데이터 유형에 대한 클래스 파일을 찾을 수 없다는 것입니다.myBatis 구성을 사용하는 동안 ClassNotFound

ClientMapper.xml

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 
    'http://mybatis.org/dtd/mybatis-3-mapper.dtd'> 

<mapper namespace='Client'> 
    <select id='getNumber' parameterType='String' 
     resultType='org.TE1.Client'> 
     SELECT 
     number AS phone 
     FROM client 
     WHERE name = #{name} 
    </select> 
</mapper> 

ClientMapperInterface.java

package org.TE1.Mapper; 

public interface ClientMapperInterface { 
    public String getNumber(String name); 
} 

Client.java

package org.TE1.Client; 

public class Client { 
    private int id; 
    private String name; 
    private String phone; 

    //some getters and setters 
} 

의 MyBatis-config.xml의

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE configuration 
    PUBLIC '-//mybatis.org//DTD Config 3.0//EN' 
    'http://mybatis.org/dtd/mybatis-3-config.dtd'> 
<configuration> 
    <properties resource='jdbc.properties' /> 
    <typeAliases> 
     <typeAlias type='org.TE1.Client' alias='Client'></typeAlias> 
    </typeAliases> 
    <environments default='development'> 
     <environment id='development'> 
      <transactionManager type='JDBC' /> 
      <dataSource type='POOLED'> 
       <property name='driver' value='com.ibm.db2.jcc.DB2Driver' /> 
       <property name='url' value='jdbc:as400://localhost:50000/dir' /> 
       <property name='username' value='root' /> 
       <property name='password' value='admin' /> 
      </dataSource> 
     </environment> 
    </environments> 
    <mappers> 
     <mapper resource='org/TE1/Mapper/ClientMapper.xml' /> 
    </mappers> 
</configuration> 
0

테스터 java 파일.

public class testGetPhone { 
    public static void main(String[] args) { 
     Reader reader = null; 
     try { 
      reader = Resources.getResourceAsReader("mybatis-config.xml"); 
     } catch (IOException e) { 
      System.out.println("MyBatis config not found!"); 
      e.printStackTrace(); 
     } 
     SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); 
     SqlSession session = sqlSessionFactory.openSession(); 

     int number = session.selectOne("Client.getNumber", "TEST"); 
     System.out.println("number:" + number); 
     session.commit(); 
     session.close(); 
    } 
} 

은 처음에는 클래스 파일에 대한 있지만 일부 땜질 후에 나는 그것이 클래스 파일을 찾을 않는 확신 어떻게 설정 검색에 문제가있을 수 있습니다 생각하지만하지 올바른 클래스 파일 (하지를 생각한다 물론 그것에 대해). 어떤 도움이 필요합니까? 확인

답변

0

는 그래서 난

<typeAlias type='org.TE1.Client.Client' alias='Client'></typeAlias> 

<typeAlias type='org.TE1.Client' alias='Client'></typeAlias> 

을 변경하고 트릭을 할 것 같았다. 어쩌면 클래스 파일을 찾는데 실패했을 수도 있습니다.

+1

실제로 네임 스페이스는 패키지 이름뿐만 아니라 (정규화 된) 클래스 이름이어야합니다. 그런데 패키지를 소문자로 이름을 짓는 것이 가장 좋습니다. 그리고 패키지 경로의 마지막 세그먼트가 클래스와 처음으로 혼동을 일으킨 이름과 같은 이름을 갖습니다. – blackwizard