mybatis动态SQL

在进行以下操作的时候,我们需要做一些准备工作

        使用的工具是IDEA,还需要一个数据库

        mybatis动态SQL

               【注:如需要了解包中的具体内容,可参考文件具体内容】

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>

以上的内容是自己总结的一些简单的知识点,希望大家多多支持!!

上一篇:MySQL多表事务


下一篇:Oracle SCOTT中几张表的练习