을 [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;
}
어디에서 XML 파일을 보관 했습니까? Maven을 사용하고 있습니까? 또한 게시물을 구성 파일을 이해하고 당신이 mapp * xml 파일을 추가 할 수 있습니다. –
프로젝트의 xml 파일. 우리는 .mym 파일을 유지했습니다.이 Mapper.xml 파일을 사용하여 인터페이스 만 매핑하고 다른 구성 파일은 만들지 않습니다. –
당신은 dropwizard에서 어떻게하는지 모르겠지만, 당신은 당신이 factory.setMapperLocations ("classpath :/mapper")를 셋팅 할 필요가있는 모든 mapper.xml을 가지고있는 디렉토리 매퍼를 가지고 있다고 말한다. 귀하의 구성에서 mapper.xml이 어디에 있는지 (검색 대상) –