关于iBATIS的sqlmap的几点说明

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


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

2.对于输入参数

<result column="TBR" property="tbr" jdbcType="VARCHAR" nullValue="" />


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

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


才可以避免这个问题

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

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

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

例子如下:
  
   <!-- Oracle SEQUENCE Example using .NET 1.1 System.Data.OracleClient -->  
    <insert id="insertProduct-ORACLE" parameterClass="product">  
        <selectKey resultClass="int" type="pre" keyProperty="id" >  
            SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL  
        </selectKey>  
        insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values(#id#,#description#)  
    </insert>  
      
    <!-- Microsoft SQL Server IDENTITY Column Example -->  
    <insert id="insertProduct-MS-SQL" parameterClass="product">  
        insert into PRODUCT (PRD_DESCRIPTION)  
        values (#description#)  
        <selectKey resultClass="int" type="post" keyProperty="id" >  
            select @@IDENTITY as value  
        </selectKey>  
    </insert>  
     
    <!-- MySQL Example -->  
    <insert id="insertProduct-MYSQL" parameterClass="product">  
        insert into PRODUCT (PRD_DESCRIPTION)  
        values (#description#)  
        <selectKey resultClass="int" type="post" keyProperty="id" >  
            select LAST_INSERT_ID() as value  
        </selectKey>  
    </insert>  

你可能感兴趣的:(oracle,sql,mysql,ibatis,SQL Server)