zoukankan      html  css  js  c++  java
  • MyBatis之动态SQL

    MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。

    (1)接口中的方法

    1   public List<Emp> getEmps(Emp emp);
    2     
    3     public void updateEmp(Emp emp);
    4     
    5     public List<Emp> getEmpsByIds(@Param("ids") List<Integer> ids);
    6     
    7     public void addEmps(@Param("emp") List<Emp> emp);

    (2)Mapper文件

    if标签 + where标签

    <resultMap type="com.eu.bean.Emp" id="emp">
              <id column="id" property="id"/>
              <result column="last_name" property="lastName"/>
              <result column="gender" property="geder"/>
              <result column="email" property="email"/>
          </resultMap>
      
        <select id="getEmps" resultMap="emp">
            SELECT *FROM emp
            <where>
                <if test="id != null">
                    id = #{id}
                </if>
                <if test="lastName != null">
                    and last_name = #{lastName}
                </if>
                <if test="geder != null">
                     and gender = #{geder}
                </if>
            </where>
        </select> 

    choose,when 有一个whe标签成立 ,其余的when标签中的内容不再执行

     1   <select id="getEmps" resultMap="emp">
     2         SELECT *FROM emp
     3         <where>
     4             <choose>
     5                 <when test="id != null">
     6                     id = #{id}
     7                 </when>
     8                 <when test="lastName != null">
     9                     and last_name = #{lastName}
    10                 </when>
    11                 <when test="geder != null">
    12                     and gender = #{geder}
    13                 </when>
    14                 <otherwise>
    15                     id=1
    16                 </otherwise>
    17             </choose>
    18         </where>
    19     </select>

    set标签

     1   <update id="updateEmp">
     2         UPDATE emp
     3         <set>
     4             <if test="lastName != null">
     5                 last_name=#{lastName},
     6             </if>
     7             <if test="geder != null">
     8                 gender = #{geder}
     9             </if>
    10         </set> 
    11         WHERE id=#{id}
    12     </update>

     foreach标签

     1   <!-- SELECT *FROM emp
     2          WHERE id IN (1,5,6) -->
     3       <select id="getEmpsByIds" resultMap="emp">
     4               SELECT *FROM emp
     5               WHERE id IN 
     6               <foreach collection="ids" item="item_id" separator="," 
     7                   open="(" close=")">
     8                    #{item_id}
     9               </foreach>
    10       </select>

     foreach标签 批量插入

    1 <insert id="addEmps">
    2               INSERT INTO emp(last_name,gender,email)
    3             VALUES
    4             <foreach collection="emp" item="emps" separator=",">
    5                 (#{emps.lastName},#{emps.geder},#{emps.email})
    6             </foreach>
    7       </insert>
  • 相关阅读:
    让你的网站在移动端健步如飞
    select元素javascript常用操作 转
    网站CSS写在html里面的好处
    Javascript 严格模式详解
    mac下网页中文字体优化
    js作用域相关知识总结
    【待填坑】 undefined和not defined的区别
    【待填坑】js构造函数和内置对象的区别
    echarts入门1【柱状图/饼图】
    echarts在miniUI和ajax下动态渲染数据
  • 原文地址:https://www.cnblogs.com/wanerhu/p/10751836.html
Copyright © 2011-2022 走看看