SqlMap异常的处理

摘自:http://jun1986.iteye.com/blog/1150606

ibatIS需要注意的几个地方,否则很容易出错,避免低级错误的方法:

1.TPhonesale.xml中,必须要定义namespace

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

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

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

3.sql-map-config.xml中一定要加入自己编写的TPhonesale.xml引用,否则ibatIS无法找到

<sqlMapConfig>
 <settings cacheModelsEnabled="true" enhancementEnabled="true"
  lazyLoadingEnabled="false" useStatementNamespaces="true" />
   
 <sqlMap resource="com/hanpeng/base/ibatis/COMMON_SqlMap.xml"/>
 <sqlMap resource="com/hanpeng/base/ibatis/Area.xml"/>
 <sqlMap resource="com/hanpeng/base/ibatis/Tconfig.xml"/>
 <sqlMap resource="com/hanpeng/base/ibatis/TPhonesale.xml"/>
</sqlMapConfig>

4.实际中继承SqlMapClientDaoSupport,使用.queryForObject("namespace.id名",object/parameterObject);

Java代码  收藏代码
  1. public class AreaDAOImpl extends SqlMapClientDaoSupport implements AreaDAO{  
  2.       
  3.     public int queryCount(TArea area) {  
  4.           
  5.         return (Integer)getSqlMapClientTemplate().queryForObject("TTArea.count", area);  
  6.           
  7.     }  
  8.   
  9.     public List queryPage(TArea area) {  
  10.         return getSqlMapClientTemplate().queryForList("TTArea.queryPage", area);  
  11.     }  
  12.   
  13. }  

 

Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >  
  3.   
  4. <sqlMap namespace="TTArea">  
  5.     <select id="load" parameterClass="com.hanpeng.base.model.TArea" resultClass="com.hanpeng.base.model.TArea">  
  6.         SELECT   
  7.             CITY as city ,            
  8.             AREA_CODE as areaCode ,           
  9.             PROVINCE as province              
  10.         FROM T_AREA  
  11.         WHERE  
  12.             CITY=#city#     </select>  
  13.       
  14.     <select id="query"  parameterClass="com.hanpeng.base.model.TArea" resultClass="com.hanpeng.base.model.TArea">  
  15.     SELECT  
  16.              CITY  as city ,              
  17.              AREA_CODE  as areaCode ,             
  18.              PROVINCE  as province            
  19.     FROM  T_AREA   
  20.     <dynamic prepend="WHERE">  
  21.             <isNotEmpty prepend=" AND " property="city">  
  22.             CITY =  #city#      </isNotEmpty>  
  23.             <isNotEmpty prepend=" AND " property="areaCode">  
  24.             AREA_CODE =  #areaCode#         </isNotEmpty>  
  25.             <isNotEmpty prepend=" AND " property="province">  
  26.             PROVINCE =  #province#      </isNotEmpty>  
  27.         </dynamic>  
  28.     </select>  
  29.       
  30. </sqlMap>  

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------

 

使用ibatIS,出现了下面的错误

There is no statement named User.login in this SqlMap,网上查询发现,xml中没有定义namespace

Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">  
  3.   
  4. <sqlMap namespace="TPhonesale">  
  5.     <select id="load" parameterClass="java.lang.String" resultClass="com.hanpeng.base.model.TPhonesale">  
  6.     SELECT  
  7.              SALE_NUM  as saleNum ,           
  8.              ORDER_ID  as orderId ,           
  9.              SUPPLY_ID  as supplyId ,             
  10.              USER_ID  as userId ,             
  11.              PHONE  as phone ,            
  12.              PRICE  as price ,            
  13.              COST  as cost ,              
  14.              COMMISSION  as commission ,              
  15.              STATE  as state ,            
  16.             CREATE_DATE  as createDate ,              
  17.             GET_DATE  as getDate ,            
  18.             FINISH_DATE  as finishDate ,              
  19.              TYPE_CODE  as typeCode ,             
  20.              AREA_CODE  as areaCode ,             
  21.              PRODUCT_NUM  as productNum ,             
  22.              OPERATORS_CODE  as operatorsCode ,           
  23.              CHANNEL_NUM  as channelNum ,             
  24.              COLLECT  as collect ,            
  25.              EMPLOYEE_NUM  as employeeNum ,           
  26.              THIRD_CHANNEL_NUM  as thirdChannelNum ,              
  27.              MAN_STATE  as manState ,             
  28.              SEND_STATE  as sendState ,           
  29.              CARD_NUM  as cardNum ,           
  30.              CARD_PASS  as cardPass ,             
  31.              PAY_MONEY  as payMoney ,             
  32.              SUPPLY_FAILED  as supplyFailed ,             
  33.              CS_NUM  as csNum ,           
  34.              CS_DEAL_INFO  as csDealInfo              
  35.     FROM  T_PHONESALE  WHERE SALE_NUM = #saleNum#  
  36.     </select>  
  37. </sqlMap>  

 

posted on 2013-05-10 09:19  青春丶冭柔情  阅读(494)  评论(0编辑  收藏  举报

导航