mybatis中refid是什么意思
1、首先定义一个sql标签,一定要定义唯一id<sqlid="Base_Column_List" >name,age</sql>
2、然后通过id引用
<select id="selectAll">
select
<include refid="Base_Column_List" />
from student
</select>
这个<include refid="Base_Column_List" />会自动把上面的代码贴过来
即:<select id="selectAll">
select name,age
from student
</select>
mybatis动态sql中foreach标签的使用
foreach标签主要用于构建in条件,他可以在sql中对集合进行迭代。如下:
<deleteid="deleteBatch">
deletefrom user where id in
<foreachcollection="array" item="id" index="index"open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
我们假如说参数为---- int[] ids = {1,2,3,4,5} ----那么打印之后的SQL如下:
deleteform user where id in (1,2,3,4,5)
释义:
collection:collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合,我在上面传的参数为数组,所以值为array
item :表示在迭代过程中每一个元素的别名
index:表示在迭代过程中每次迭代到的位置(下标)
open :前缀
close:后缀
separator:分隔符,表示迭代时每个元素之间以什么分隔
我们通常可以将之用到批量删除、添加等操作中。
mybatis动态sql中的trim标签的使用
trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码:
1、
select* from user
<trimprefix="WHERE" prefixoverride="AND |OR">
<iftest="name != null and name.length()>0"> ANDname=#{name}</if>
<iftest="gender != null and gender.length()>0"> ANDgender=#{gender}</if>
</trim>
假如说name和gender的值都不为null的话打印的SQL为:select * from user where name = 'xx' and gender = 'xx'
在红色标记的地方是不存在第一个and的,上面两个属性的意思如下:
prefix:前缀
prefixoverride:去掉第一个and或者是or
2、
updateuser
<trimprefix="set" suffixoverride="," suffix=" where id =#{id} ">
<iftest="name != null and name.length()>0"> name=#{name} ,</if>
<iftest="gender != null and gender.length()>0"> gender=#{gender} , </if>
</trim>
假如说name和gender的值都不为null的话打印的SQL为:update user set name='xx' ,gender='xx' whereid='x'
在红色标记的地方不存在逗号,而且自动加了一个set前缀和where后缀,上面三个属性的意义如下,其中prefix意义如上:
suffixoverride:去掉最后一个逗号(也可以是其他的标记,就像是上面前缀中的and一样)
suffix:后缀