初识ibatis
1.ibatis是一种半自动化的应用于持久化层的开发框架,是apache的一个开源项目,它支持java和.net开发。其半自动化的含义是:它是针对hibernate的全自动化的模式而言的,它不会自动生成和执行sql,而需要程序员去手动开发sql。
2.ibatis与hibernate的区别:ibatis是半自动化的,它是与sql语句形成映射;bibernate是全自动化的,它是与数据库表形成映射。
3.xml映射文件中的>大于号和<小于号要写成>和<,如果使用<![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 <= #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语句,否则省略。