iBatis异常

来源:互联网 发布:淘宝上的古董店 编辑:程序博客网 时间:2024/06/05 00:07

  今天用iBatis时,总是弹出异常:

     om.ibatis.sqlmap.client.SqlMapException: There is no statement named User.findById in this SqlMap.
       at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.getMappedStatement(SqlMapExecutorDelegate.java:293)
      at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:557)
      at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:541)
      at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
      at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:83)
      at com.leec.demo_iBatis.model.DAO.UserDAO.findById(UserDAO.java:65)
      at com.leec.demo_iBatis.model.DAO.TestIbatis.main(TestIbatis.java:23)

  检查了好久,终于把问题给解决了。网上有很多关于这个异常的解决办法,但是都不够全面,而且偏偏没有我所出现的情况,所以费了好长时间。不过,总算,弄懂了。
    下面就列举一下可能会出现这个异常的原因吧:

  1.在具体数据表的映射文件中,必须要定义namespace

  2.TPhonesale.xml中  parameterClass="java.lang.String"或者"String"

      resultClass="com.hanpeng.base.model.TPhonesale"

    注意:parameterClass是要传的参数;resultClass是返回值类型。这两个值不对触发'无效的对象类型       异常'

  3.sqlMapConfig.xml中一定要加入自己编写的数据表的映射文件.xml文件引用,否则ibatIS无法找到

    <sqlMap resource="com.leec.demo_iBatis.model.POJO.User"/>
  4.在dao层调用sql语句时,要用“别名.id名”,如查询我们可以使用queryForObject("namespace.id     名",object/parameterObject);

 

我的问题就是第四种情况造成的。