Java MyBatis-ResultHandler未被调用
我举了一个例子: 这是我的界面:Java MyBatis-ResultHandler未被调用,java,sql,mybatis,Java,Sql,Mybatis,我举了一个例子: 这是我的界面: public interface CountryDirRdbMapper { public static class CountryDirBaseItemWithText { public CountryDirBaseItem baseItem; } public List<CountryDirBaseItem> select(ResultHandler handler); } 这是我的xml映射器 &l
public interface CountryDirRdbMapper {
public static class CountryDirBaseItemWithText {
public CountryDirBaseItem baseItem;
}
public List<CountryDirBaseItem> select(ResultHandler handler);
}
这是我的xml映射器
<resultMap id="readItemsRM" type="CountryDirRdbMapper$CountryDirBaseItemWithText">
<association property="baseItem" javaType="CountryDirBaseItem">
<id property="id" column="Id"/>
<result property="comment" column="Comment"/>
</association>
</resultMap>
此代码构成我的DAO:
SqlSession session = MyBatisConnectionFactory.getSqlSessionFactory().openSession(true);
List<CountryDirBaseItem> list;
try{
CountryDirRdbMapper mapper = session.getMapper(CountryDirRdbMapper.class);
class MyResultHandler implements ResultHandler {
@Override
public void handleResult(ResultContext context) {
System.out.println("#########################");
}
}
MyResultHandler handler=new MyResultHandler();
list= mapper.select(handler);
}
finally {
session.close();
}
但是,永远不会调用结果处理程序。在这个例子中,我跟随人们说他们也有同样的问题。那么如何让它工作呢?或者mybatis 3中不支持结果处理程序?我找到了答案。不幸的是,MyBatis开发人员根本不关心用户。他们真可耻。事实上,当我们使用自定义结果处理程序时,我们必须使用会话而不是接口
MyResultHandler handler=new MyResultHandler();
session.select("select", handler);
在这之后,必须从处理程序中获取结果。我找到了答案。不幸的是,MyBatis开发人员根本不关心用户。他们真可耻。事实上,当我们使用自定义结果处理程序时,我们必须使用会话而不是接口
MyResultHandler handler=new MyResultHandler();
session.select("select", handler);
之后,必须从处理程序中获取结果。从信息片段中计算出来 您需要从安装程序中获取SqlSession的实例 sqlSession=sqlSessionFactory.openSession 要将映射器与结果处理程序一起使用,需要使映射器返回void变得重要,并为此映射器设置结果类型 @从用户中选择Select* void selectAllUserResultHandler处理程序 从sqlSession获取映射器 UserMapper mapper=sqlSession.getMapperUser.class 设置带有处理程序的会话方法,第一个参数是要与处理程序关联的映射器的方法名称 sqlSession.selectselectAllUser,您的结果处理器 开始使用映射器 mapper.selectAllUseryourResultHandler 完成后不要忘记释放关闭会话
从一些信息中找出了答案 您需要从安装程序中获取SqlSession的实例 sqlSession=sqlSessionFactory.openSession 要将映射器与结果处理程序一起使用,需要使映射器返回void变得重要,并为此映射器设置结果类型 @从用户中选择Select* void selectAllUserResultHandler处理程序 从sqlSession获取映射器 UserMapper mapper=sqlSession.getMapperUser.class 设置带有处理程序的会话方法,第一个参数是要与处理程序关联的映射器的方法名称 sqlSession.selectselectAllUser,您的结果处理器 开始使用映射器 mapper.selectAllUseryourResultHandler 完成后不要忘记释放关闭会话
这不准确-您可以使用接口使用结果处理程序执行映射语句,而无需使用会话。@Larry如果您写这样的评论,请提供一些有用的信息,因为其他人(如我)可能正在寻找相同的答案…这不准确-您可以使用接口执行映射语句使用结果处理程序而不使用会话。@Larry如果你写这样的评论,请提供一些有用的信息,因为其他人(如我)可能正在寻找相同的答案……谢谢你。我花了很长时间才找到解决办法。mybatis网站对此没有帮助。谢谢你。我花了很长时间才找到解决办法。mybatis网站对此没有帮助。