在进行以下操作的时候,我们需要做一些准备工作
使用的工具是IDEA,还需要一个数据库
【注:如需要了解包中的具体内容,可参考文件具体内容】
1.if:判断属性为每个条件时语句加入到sql中
select * from table where
<if test="lastName != null">
last_name=#{lastName}
</if>
<if test="email != null">
and email=#{email}
</if>
2.trim(where,set)【只在XXXMapper.xml中使用】
trim自定义字符串:将条件包在trim中,可以添加前缀或者后缀,也可以去除拼接后的条件的前面或者后面的某个多余的字符;
<trim prefix="加前缀" prefixOverrides="去除某个字符前缀" suffix="加后缀" suffixOverrides="去除某个字符后缀"></trim>
3.choose(wheree,set)
使用类似于java中的Switch-case-default
<select id="getEmpByIfChoose" resultType="mybatis.bean.Employee">
select * from t_emp
<where>
<choose>
<when test="id != null"> id =#{id} </when>
<when test="lastName != null"> last_name like #{lastName}</when>
<when test="email != null">email =#{email}</when>
<otherwise>gender =0 </otherwise>
</choose>
</where>
</select>
注:<when test=" "/>:表示当满足test的条件的时候就会去执行
<otherwise>:表示当前面所有的条件都不满足的时候去执行
4.foreach
foreach遍历,可以通过遍历来控制sql地参数,语句等相关地循环操作;也可以称为批量操作。
<select id="getEmpByListId" resultType="mybatis.bean.Employee">
select * from t_emp where id in(1,2,3)
<foreach collection="ids" item="emp_id" separator="," open="(" close=")">
#{emp_id}
</foreach>
</select>
in后面的是查询的多个条件;
collection:指要遍历的集合
item:遍历集合时的元素存放的变量值
separator:指定遍历值的分隔符
5.两个内置参数
两个内置参数分别是:
_parameter:指的是整个参数,如果需要获取参数使用paramter.属性名;通常放在使用where之前判断参数是否为空;
_databaseld:可以根据当前使用环境获取数据库别名
① _parameter
<insert id="addEmpByIdParam">
insert into t_emp(last_name,gender,email)
values(#{_paramter.lastName})
select * from t_emp
<if test="_parameter != null">
where id=#{id}
</if>
</insert>
② _databaseld
<select id="getEmpByDatabaseId" resultType="mybatis.bean.Employee">
<if test="_databaseId==mysql">
select * from t_emp
</if>
<if test="_databaseId=='oracle'">
select * from t_emp
</if>
</select>
6.Bind标签
bind:绑定;可以将传递过来的值,变成应该特定的变量;方便使用
<select id="getEmpByNameBind" resultType="mybatis.bean.Employee">
<bind name="_lastName" value=" '%' + lastName + '%' "/>
select * from t_emp
where last_name like #{_lastName}
</select>
7.sql标签
①抽取通用的sql代码块:可以将我们公共的sql语句放在sql标签中,使用时引用即可
1.id:指定该sql标签的唯一标签;可以被别的语句引用
【表示的是抽取公共部分】
<sql id="public_colum">
<if test="_databaseId == mysql">
last_name,gender,email
</if>
<if test="_databaseId == 'oracle'">
last_name01,gender01,email01
</if>
</sql>
2. 使用include可以引用抽取的sql【在需要使用的地方进行操作】
3.include中还可以定义变量
<include refid="public_colum"></include>
以上的内容是自己总结的一些简单的知识点,希望大家多多支持!!