锁定老帖子 主题:iBATIS 3 动态SQL
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-01
字符串是:<if test="status != null">
WHERE A.NN_ID = B.PARENT_NN_ID <sql id="dynamicWhere"> <select id="findAll" resultMap="SitePartResult2">
说动态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,我在些就不多说了。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-09-02
ibatis3 能不能把map文件放到jar包里面呢?
|
|
返回顶楼 | |
发表时间:2010-09-02
fordybeach 写道 ibatis3 能不能把map文件放到jar包里面呢?
2不就可以了吗? |
|
返回顶楼 | |
发表时间:2010-09-02
<select id="getTagSitePartList" resultMap="SitePartResult" parameterType="java.util.HashMap">
SELECT t1.id_,t1.part_name_ , t1.lower_node_ ,t1.part_parent_id_,t1.show_type_ , t1.sort_value_ ,t1.effective_ ,t1.part_notes_,t1.insert_time_ from tb_site_part_info t1,tb_site_channels_part_real t2,tb_site_channels_info t3 where t3.id_=t2.channels_id_ and t2.part_id_=t1.id_ <if test="@Ognl@isNotEmpty(partName)"> AND t1.part_name_ like '%${partName}%' </if> <if test=" lowerNode !=0"> AND t1.lower_node_ = #{lowerNode} </if> <if test=" partParentId !=0"> AND t1.part_parent_id_ = #{partParentId} </if> <if test=" showType !=0"> AND t1.show_type_ = #{showType} </if> <if test=" effective !=0"> AND t1.effective_ = #{effective} </if> <if test=" channelsId !=0"> AND t2.channels_id_ = #{channelsId} </if> <if test="@Ognl@isNotEmpty(sortColumns)"> ORDER BY ${sortColumns} </if> <if test="@Ognl@isNotEmpty(count)"> limit #{count} </if> </select> |
|
返回顶楼 | |
浏览 3301 次