初识ibatis

1.ibatis是一种半自动化的应用于持久化层的开发框架,是apache的一个开源项目,它支持java和.net开发。其半自动化的含义是:它是针对hibernate的全自动化的模式而言的,它不会自动生成和执行sql,而需要程序员去手动开发sql。

2.ibatis与hibernate的区别:ibatis是半自动化的,它是与sql语句形成映射;bibernate是全自动化的,它是与数据库表形成映射。

3.xml映射文件中的>大于号和<小于号要写成&gt和&lt,如果使用<![CDATA[]]>的话不需要转换,但是使用<![CDATA[]>不会对其内部的xml标签进行解析,如<dynamic></dynamic>(当传入的参数为空时,防止sql报错)。

4.sql和include标签配合使用,可以灵活使用sql语块,如:

 1 <sql id="selectBasicSql">   
 2  select  samplingTimestamp,onlineNum,year,month,week,day,hour from    
 3  OnlineMemberNum  
 4 </sql>    
 5  <sql id="whereSqlBefore">    
 6  where samplingTimestamp &lt;= #samplingTimestamp#   
 7  </sql>    
 8  <select id="com.fashionfree.accesslog.selectOnlineMemberNumsBeforeSamplingTimestamp" parameterClass="hashmap" resultClass="OnlineMemberNum">    
 9 <include refid="selectBasicSql" />    
10 <include refid="whereSqlBefore" />    
11 </select>

5.iterate标签是一个遍历标签,一般用于传入List的情况。

  <delete id="deletePerson" parameterClass="java.util.List">
    delete from 表名 where      sex=#sex#         
        <iterate prepend="and" property="personList" open="("
          close=")" conjunction="or">
          age=#[].age#
        </iterate> 
  </delete>

输出sql如下:
delete from 表名 where sex='man' and (age =11 or age=12)  注意List中存的是11和12

6.sysdate是oracle中的当前时间

7.$与#的区别:#将之解析为它所代表的字符串值,$则进行字符串拼接,一般会将字符串的引号去掉,如$id$最终结果为id

8.isNull,isEmpty,isEqual等标签是条件标签,意为如果...则查询条件有效,如:isNull意思是如果参数为null则查询条件有效。

<isNotEmpty prepend="and" property="isSuccess">
 <![CDATA[ is_success = #isSuccess# ]]>
</isNotEmpty>

上段代码的意思是如果传入的参数isSuccess不为null或“”则查询有效,执行当中的sql语句,否则省略。

        

posted on 2014-07-31 17:15  windyFeng  阅读(160)  评论(0编辑  收藏  举报