欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iBATIS 3 动态SQL 博客分类: 技术简介 iBATISSQLBean 

程序员文章站 2024-02-18 12:57:28
...

字符串是:<if test="status != null">  
INT 是:<if test="number!= 0">  

 

        WHERE A.NN_ID = B.PARENT_NN_ID   
        AND A.NN_ID = C.NN_ID   
        <if test="id != null">  
            AND A.NN_ID = #{id}   
        </if>  
        <if test="category != null">  
            AND A.CATEGORY = #{category}   
        </if>  
        <if test="status != null">  
            AND A.WF_STATUS = #{status}   
        </if>  
    </select>  

<sql id="dynamicWhere">
  <where>
        <if test="userId != null">
    and user_id = #{userId}
   </if>
        <if test="username != null">
    and username = #{username}
   </if>
        <if test="password != null">
    and password = #{password}
   </if>
        <if test="birthDate != null">
    and birth_date = #{birthDate}
   </if>
        <if test="sex != 0">
    and sex = #{sex}
   </if>
        <if test="age != 0">
    and age = #{age}
   </if>
  </where>
 </sql>

    <select id="findAll" resultMap="SitePartResult2">
  SELECT <include refid="sitePartColumns" />
     <![CDATA[
      FROM tb_site_part_info
     ]]>
 </select>

 

说动态SQL,这是iBATIS最强大的地方,如果熟悉iBATIS 2的话,一眼可以看出没有了<isNotNull>、<isNotEmpty>、<isLessThan>等熟悉的标签,不错,iBATIS使用了类似JSTL的标签<if>、<choose>、<when>、<otherwise>、<foreach>等来代替原来的标签,并且传值方式由#property name#, $property name$变为了#{property name}和${property name},就我个人而言,这些标签感觉没有iBATIS2用上去爽。

  此外根元素<mapper>的属性namespace在iBATIS 3中是required,而不像iBATIS 2中是可选的,可要可不要。

  下面来说说新增元素<association>和<collection>,<association>对应于Java中的Has A模型,也可以理解为数据库中一对一关系,拿上述例子来说,每条消息的概要信息与消息内容是分别存放在两张Table中的,可以通过上述方法一次性将其取出来,而不需要执行多次查询。而<collection>有点类型主从表关系,即one-to-many模型。

  查询标签<select>也有所改变,首先是属性名称,由原来的parameterClass改为了parameterType,resultClass与变为了resultType,此外需要注意的是如果传入的参数类型为复杂对象,如Bean,则需要在参数后面加上jdbcType属性来指定对应数据库表列的类型,如#{userName, jdbcType=VARCHAR},如果传入的是基本类型,像int,long之类的,则不需要指定。

  另外的变化就是执行方法上的变化,使用select, selectOne, selectList等替代了原来的方法,大家可以参考其API,我在些就不多说了。

 

 

相关标签: iBATIS SQL Bean