2016-12-30 1 views
0

을 [2016년 12월 30일 04 : 36 : 34,735] io.dropwizard.jersey.errors.LoggingExceptionMapper : 요청 처리 오류 : 6813de3aa499e307 ! org.apache.ibatis.binding.BindingException : 유효하지 않은 바인드 된 명령문 (찾을 수 없음) : db.UserMapper.org.apache.ibatis.binding.BindingException : 잘못된 경계 문 (찾을 수 없음)하십시오 DROPWIZARD 응용 프로그램을</p> <p>오류를 실행하는 동안 예외가 직면 db.UserMapper.xxx

@Path("/user/{username}") 
public class ExampleResource { 

private final SqlSessionFactory sessionFactory; 

    public ExampleResource(SqlSessionFactory sessionFactory) { 
     this.sessionFactory = sessionFactory; 
    } 

    @GET 
    public User getUser(@PathParam("username") String username) { 

     try (SqlSession session = sessionFactory.openSession()) 
     { 
      UserMapper users = session.getMapper(UserMapper.class); 
      //session.getConfiguration().addMapper(UserMapper.class); 
      //UserMapper users = session.getMapper(UserMapper.class); 
      return users.findByUsername(username); 
     } 

    } 
} 

UserMapper.xml

<mapper namespace="db.UserMapper" class="db.UserMapper"> 
<select id="findByUsername" resultType="User"> 
<![CDATA[ 
    select username,email 
    from user 
    where username = #{username} 
]]> 
</select> 

<resultMap id="User" type="core.User"> 
    <id column="username" property="username" /> 
    <result column="email" property="email" /> 
</resultMap> 

<insert id="addUser"> 
<![CDATA[ 
    insert into user (username, email) 
    values (#{User.username}, #{User.email}) 
]]> 
</insert> 

user mapper.java 

public interface UserMapper { 

User findByUsername(@Param("username") String username); 

    void addUser(@Param("user") User user); 
} 

ConfigurationClass : 우리가 내를 초기화

@Valid 
@NotNull  

private DataSourceFactory datasourceFactory = new DataSourceFactory(); 

@JsonProperty("database") 
public DataSourceFactory getDataSourceFactory() { 
     return this.datasourceFactory; 
    } 
public void setDatabase(DataSourceFactory database) { 
    this.datasourceFactory = database; 
} 
+0

어디에서 XML 파일을 보관 했습니까? Maven을 사용하고 있습니까? 또한 게시물을 구성 파일을 이해하고 당신이 mapp * xml 파일을 추가 할 수 있습니다. –

+0

프로젝트의 xml 파일. 우리는 .mym 파일을 유지했습니다.이 Mapper.xml 파일을 사용하여 인터페이스 만 매핑하고 다른 구성 파일은 만들지 않습니다. –

+0

당신은 dropwizard에서 어떻게하는지 모르겠지만, 당신은 당신이 factory.setMapperLocations ("classpath :/mapper")를 셋팅 할 필요가있는 모든 mapper.xml을 가지고있는 디렉토리 매퍼를 가지고 있다고 말한다. 귀하의 구성에서 mapper.xml이 어디에 있는지 (검색 대상) –

답변

0

우리가 메인 클래스의 dropwizard와의 MyBatis를 사용하는 batisbundle은 해당 시간에 매퍼 클래스가있는 패키지 이름을 제공합니다. 아래 코드가 강조 표시되어 있습니다.

private final MybatisBundle<TestDropWizardConfiguration> mybatisBundle = new MybatisBundle<TestDropWizardConfiguration>("**com.example.helloworld**") { 
    @Override 
    public DataSourceFactory getDataSourceFactory(TestDropWizardConfiguration configuration) { 
     return configuration.getDataSourceFactory(); 
    } 
}; 
관련 문제