Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.apache.ibatis.binding.BindingException:无效的绑定语句(未找到):db.UserMapper.xxx_Java_Xml_Orm_Mybatis_Dropwizard - Fatal编程技术网

Java org.apache.ibatis.binding.BindingException:无效的绑定语句(未找到):db.UserMapper.xxx

Java org.apache.ibatis.binding.BindingException:无效的绑定语句(未找到):db.UserMapper.xxx,java,xml,orm,mybatis,dropwizard,Java,Xml,Orm,Mybatis,Dropwizard,运行DROPWIZARD应用程序时遇到异常 错误[2016-12-30 04:36:34735]io.dropwizard.jersey.errors.LoggingExceptionApper:处理请求时出错:6813de3aa499e307 ! org.apache.ibatis.binding.BindingException:未找到无效的绑定语句:db.UserMapper @Path("/user/{username}") public class ExampleResource {

运行DROPWIZARD应用程序时遇到异常

错误[2016-12-30 04:36:34735]io.dropwizard.jersey.errors.LoggingExceptionApper:处理请求时出错:6813de3aa499e307 ! org.apache.ibatis.binding.BindingException:未找到无效的绑定语句:db.UserMapper

@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>
配置类:

@Valid
@NotNull    

private DataSourceFactory datasourceFactory = new DataSourceFactory();

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

当我们在主类中使用mybatis和dropwizard时,我们初始化 mybatisbundle,此时提供映射器类所在的包名。 在下面的代码中高亮显示


我的问题是spring找不到mapper.xml,但是take@Test可以找到。 我的XXXmapper.xml和XXXXmapper.java位于同一位置src/main/java/…/。
我将所有XXXmapper.xml移到“src/main/resources/mapper”“,以及您保存xml文件的加载项?是否使用maven?也可以发布配置文件,以了解您是否在项目中添加了mapp*xml文件xml文件我们保存了.yml文件。我使用此Mapper.xml文件只是为了映射接口,而不是其他配置文件。不确定如何在dropwizard中执行此操作,但请说您有目录映射器在保存所有mapper.xml的地方,对于SqlSessionFactoryBean,您需要设置factory.setMapperLocationsclasspath:/mapper;在您的配置中,您没有说明要搜索的mapper.xml的位置
@Valid
@NotNull    

private DataSourceFactory datasourceFactory = new DataSourceFactory();

@JsonProperty("database")
public DataSourceFactory getDataSourceFactory() {
        return this.datasourceFactory;
    }
public void setDatabase(DataSourceFactory database) {
    this.datasourceFactory = database;
}
private final MybatisBundle<TestDropWizardConfiguration> mybatisBundle = new MybatisBundle<TestDropWizardConfiguration>("**com.example.helloworld**") {
    @Override
    public DataSourceFactory getDataSourceFactory(TestDropWizardConfiguration configuration) {
        return configuration.getDataSourceFactory();
    }
};