分享

关于iBATIS的sqlmap的几点说明

 WindySky 2009-04-20
1.对于数据库设计DATE类型,如果我们要要求返回带时间的格式时间"yyyy-MM-dd HH:mm:ss" 那么我们的 
Java代码 复制代码
  1. <result column="TBSJ" property="tbsj" jdbcType="DATETIME" />  


中"jdbcType"必须为"DATETIME",否则将返回"yyyy-MM-dd" 格式;

2.对于输入参数

Java代码 复制代码
  1. <result column="TBR" property="tbr" jdbcType="VARCHAR" nullValue="" />  


我们可以指定"nullValue",当数据库没有值时,可以使用的默认值,但是有时我们不愿意指定默认值,那么我们该怎么班呢?对于 jdbcType="DATE" 不会报错,但是他会返回null,如果引用的客户端没有进行处理,那么很可能报nullpoint的错误;

3.对于输入的"parameterClass",如果为空值,同样会弹出一些错误,解决的方法就是采用动态的参数设置
Java代码 复制代码
  1. <dynamic>   
  2.        <isNotEmpty property="tznr" close=",">   
  3.                 TZNR = #tznr:VARCHAR#   
  4.        </isNotEmpty>   
  5. </dynamic>  


才可以避免这个问题

4.当我们在 sqlMap的"resultMap"类型与代码里面的转换类型不一致时,他会部报任何错误,而是只有一个返回null的错误,有时很难查找这样的问题,所以,当你感到莫名其妙的时候,请一定回头看看你的类型是否匹配;

5.我们在数据库插入一条数据的时候,经常是需要返回插入这条数据的主键。但是数据库供应商之间生成主键的方式都不一样。

有些是预先生成(pre-generate)主键的,如Oracle和PostgreSQL;有些是事后生成(post-generate)主键的,如MySQL和SQL Server。但是不管是哪种方式,我们都可以用iBATIS的节点来获取语句所产生的主键。

例子如下:
  
Xml代码 复制代码
  1. <!-- Oracle SEQUENCE Example using .NET 1.1 System.Data.OracleClient -->     
  2.  <insert id="insertProduct-ORACLE" parameterClass="product">     
  3.      <selectKey resultClass="int" type="pre" keyProperty="id" >     
  4.          SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL     
  5.      </selectKey>     
  6.      insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values(#id#,#description#)     
  7.  </insert>     
  8.       
  9.  <!-- Microsoft SQL Server IDENTITY Column Example -->     
  10.  <insert id="insertProduct-MS-SQL" parameterClass="product">     
  11.      insert into PRODUCT (PRD_DESCRIPTION)     
  12.      values (#description#)     
  13.      <selectKey resultClass="int" type="post" keyProperty="id" >     
  14.          select @@IDENTITY as value     
  15.      </selectKey>     
  16.  </insert>     
  17.      
  18.  <!-- MySQL Example -->     
  19.  <insert id="insertProduct-MYSQL" parameterClass="product">     
  20.      insert into PRODUCT (PRD_DESCRIPTION)     
  21.      values (#description#)     
  22.      <selectKey resultClass="int" type="post" keyProperty="id" >     
  23.          select LAST_INSERT_ID() as value     
  24.      </selectKey>     
  25.  </insert>    

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多