zoukankan      html  css  js  c++  java
  • Mybatis框架基础入门(六)--动态sql

    主要是通过mybatis提供的各种标签方法实现动态拼接sql。

    1.if标签

    <!-- 根据条件查询用户 -->
    <select id="queryUserByWhere" parameterType="user" resultType="user">
    	SELECT id, username, birthday, sex, address FROM `user`
    	WHERE 1=1
    	<if test="sex != null and sex != ''">
    		AND sex = #{sex}
    	</if>
    	<if test="username != null and username != ''">
    		AND username LIKE
    		'%${username}%'
    	</if>
    </select>
    

    2. where标签

    <!-- 根据条件查询用户 -->
    <select id="queryUserByWhere" parameterType="user" resultType="user">
    	SELECT id, username, birthday, sex, address FROM `user`
    <!-- where标签可以自动添加where,同时处理掉sql语句中第一个and关键字 -->
    	<where>
    		<if test="sex != null">
    			AND sex = #{sex}
    		</if>
    		<if test="username != null and username != ''">
    			AND username LIKE
    			'%${username}%'
    		</if>
    	</where>
    </select>
    

    3.sql片段

    sql中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的。

    <!-- 声明sql片段 -->
    <sql id="userFields">
    	id, username, birthday, sex, address
    </sql>
    
    
    <select id="queryUserByWhere" parameterType="user" resultType="user">
    	<!-- 使用include标签加载sql片段;refid是sql片段id -->
    	SELECT <include refid="userFields" /> FROM `user`
    </select>
    
    
    

    4.foreach标签

    向sql传递数组或List,mybatis使用foreach解析

    <!-- 根据ids查询用户 -->
    <select id="queryUserByIds" parameterType="QueryVo" resultType="User">
    	SELECT * FROM `user`
    	<where>
    		<!-- foreach标签,进行遍历 -->
    		<!-- collection:遍历的集合,这里是QueryVo的ids属性 -->
    		<!-- item:遍历的项目,可以随便写,,但是和后面的#{}里面要一致 -->
    		<!-- open:在前面添加的sql片段 -->
    		<!-- close:在结尾处添加的sql片段 -->
    		<!-- separator:指定遍历的元素之间使用的分隔符 -->
    		<foreach collection="ids" item="id" open="id IN (" close=")"
    			separator=",">
    			#{id}
    		</foreach>
    	</where>
    </select>
    
  • 相关阅读:
    Android_EditText 密码框默认是小圆点 怎么改成其它的(*)?
    Android_view的生命周期
    Android_对android虚拟机的理解,包括内存管理机制垃圾回收机制。dalvik和art区别
    Android_触摸事件传递机制
    Android_OnLowMemory和OnTrimMemory
    Android_ FragmentTabHost切换Fragment时避免重复加载UI
    位运算&字节运算
    C#编程简短总结
    IOS随机随学
    计算机图形学
  • 原文地址:https://www.cnblogs.com/Aaron-007/p/12814604.html
Copyright © 2011-2022 走看看