我喜欢XML表示法来指定全局参数,例如连接字符串。我也喜欢Mapper注释。当我尝试将两者合并时,我得到this exception。
有没有办法将两者结合起来?我想使用XML文件进行全局配置,但mybatis会考虑Mapper接口。
问题是SqlSessionFactoryBuilder()。build()需要一个Reader(我想用它来传递XML配置),或者一个Configuration对象(我看到它有addMappers()
方法可以帮助我) - 但我不明白如何将两者结合起来。
答案 0 :(得分:9)
factory.getConfiguration().addMapper(...);
答案 1 :(得分:6)
当您使用具有精确方法签名的抽象方法创建映射器接口作为xml中的sql时。
例如。这是包含实际查询的dao.xml的命名空间。
<mapper namespace=" com.mybatis.dao.EntityMapperInterface">
<select id="selectEmployeeWithId" parameterType="Long"
resultType="com.mybatis.domain.Employee">
select id,name from employee where 1=1
<if test="_parameter != null">
AND id=#{id}
</if>
order by id
</select>
它将映射到界面com.mybatis.dao.EntityMapperInterface
public interface EntityMapperInterface {
public List<Employee> selectEmployeeWithId(Long id);
Mybatis-config文件
<mappers>
<mapper resource="com/mybatis/mappers/EntityMapper.xml" />
</mappers>
你如何从Action类/ Servlet中调用它? 当你初始化SqlSession时,
EntityMapperInterface emi = session.getMapper(EntityMapperInterface.class);
List eList = emi.selectEmployeeWithId(1);
答案 2 :(得分:0)
我遇到了同样的问题,因为mybatis映射器文件中的名称空间与mapper接口的包不匹配。