IBatis.Net使用动态SQL
动态sql就可以解决相关的多表链接查询以及模糊查询的问题
<select id="SelectEemployee" parameterClass="string" resultMap = "MemberMap">
select CardNo,Name from Member
<dynamic prepend="WHERE">
<isParameterPresent>
User_ID = #value#
</isParameterPresent>
</dynamic>
</select>
动态sql写法
<dynamic prepend ="WHERE"> 表示动态sql开始,如果关联表 prepend ="AND",可以为""
<关键字
<!—关键字可以为以下 相关含义
<isEqual> 参数等于值
<isNotEqual> 参数不等于值
<isGreaterThan> 参数大于值
<isGreaterEqual> 参数大于等于值
<isLessEqual> 参数小于等于值
<isPropertyAvailable> 参数被使用
<isNotPropertyAvailable> 参数没有使用
<isNull> 参数 is null
<isNotNull> 参数 is not null
<isEmpty> 参数为空
<isNotEmpty> 参数不为空
<isParameterPresent> 参数类不为NULL
<isNotParameterPresent> 参数类为NULL
-- >
prepend="AND" 连接关键字
property="UserID" 参数
compareValue="20"> 值,也可以为属性名来比较
1.相关sql ,就是动态sql要添加的条件,比如:
Name =#value#
2.重复元素,这个属性适合一个集合,比如SQL中的in 后的集合等
<iterate prepend="AND" 连接关键字
property="NameList" 参数
open="(" open后的串为开始括号作用“(”
close=")" close后的串为结束括号作用“)”
conjunction="OR"> 连接方式 AND 或OR,每个元素之间的符号
Name=#NameList[]#
</iterate>
--以上相当与SQL
And Name = (/open #NameList[0] or/conjunction #NameList[1] or ….)/close
</关键字>
</dynamic>
基本操作讲解完毕,相信简单的应用已经够大家使用了。
附上我使用的例子:
- <select id="GetLeagueMatchs" parameterClass="Hashtable" resultMap="LeagueMatch_Result">
- select m.match_id,
- ..........
- where sl.sub_league_id = #subleagueId#
- and s.season_year = #seasonYear#
- <dynamic>
- <isNotEqual property="roundNo" compareValue="0">
- and m.round_no = #roundNo#
- </isNotEqual>
- </dynamic>
- order by m.match_time
- </select>