• Mybatis学习三(动态sql语句)


    动态sql语句主要为以下语句

    1、动态SQL:if 语句
    2、动态SQL:if+where 语句
    3、动态SQL:if+set 语句
    4、动态SQL:choose(when,otherwise) 语句
    5、动态SQL:trim 语句
    6、动态SQL: SQL 片段
    7、动态SQL: foreach 语句

    之前的几篇学习博客我用mybatis对一张表进行的CRUD操作,但是 SQL 语句都比较简单,如果有比较复杂的 SQL 语句,经常需要拼接,而拼接 SQL稍微不注意就容易出错此时我们可以用mybatis 动态SQL,通过 if, choose, when, otherwise, trim, where, set, foreach等标签来解决这个问题,这几个标签可组合成非常灵活的SQL语句,用起来也是很舒服

      1 <?xml version="1.0" encoding="UTF-8" ?>
      2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      4 <!-- namespace:表示名称空间。现在的目的是区分id的. -->
      5 <mapper namespace="com.zhiyou100.zhl.dao.UsersDao">
      6     <sql id="detail">
      7         id,name,age,sex,day
      8     </sql>
      9     
     10     <select id="selByWhere" resultType="com.zhiyou100.zhl.bean.Users">
     11         select * from users
     12         <where>
     13             <if test="name!=null">
     14                 and name=#{name}
     15             </if>
     16             <if test="sex!=null and sex!=''">
     17                 and sex=#{sex}
     18             </if>
     19         </where>
     20     </select>
     21     
     22     <update id="updateWhere">
     23         update users
     24         <set>
     25             <if test="name!=null">
     26                 name=#{name},
     27             </if>
     28             <if test="sex!=null">
     29                 sex=#{sex},
     30             </if>
     31             <if test="age>0">
     32                 age=#{age},
     33             </if>
     34             <if test="day!=null">
     35                 day=#{day}
     36             </if>
     37         </set>
     38         where id=#{id}
     39     </update>
     40     
     41     <select id="selByWhere2" resultType="com.zhiyou100.zhl.bean.Users">
     42         select
     43         <include refid="detail"/>
     44         from users
     45         <where>
     46             <choose>
     47                 <when test="name!=null and name!=''">
     48                     name like concat('%',#{name},'%')
     49                 </when>
     50                 <when test="sex!=null and sex!=''">
     51                     sex=#{sex}
     52                 </when>
     53                 <otherwise>
     54                     age>=#{age}
     55                 </otherwise>
     56             </choose>
     57         </where>
     58     </select>
     59     
     60     <select id="selByWhere3" resultType="com.zhiyou100.zhl.bean.Users">
     61         select
     62         <include refid="detail"/>
     63         from users
     64         <trim prefix="where" prefixOverrides="and | or">
     65             <if test="name!=null and name!=''">
     66                 and name=#{name}
     67             </if>
     68             <if test="sex!=null and sex!=''">
     69                 and sex=#{sex}
     70             </if>
     71             <if test="age>0">
     72                 and age=#{age}
     73             </if>
     74             <if test="day!=null and day!=''">
     75                 and day=#{day}
     76             </if>
     77         </trim>
     78     </select>
     79     
     80     <update id="updateWhere2">
     81         update users
     82         <trim prefix="set" suffixOverrides=",">
     83             <if test="name!=null">
     84                 name=#{name},
     85             </if>
     86             <if test="sex!=null">
     87                 sex=#{sex},
     88             </if>
     89             <if test="age>0">
     90                 age=#{age},
     91             </if>
     92             <if test="day!=null">
     93                 day=#{day}
     94             </if>
     95         </trim>
     96         where id=#{id}
     97     </update>
     98     
     99     <delete id="deleteByIds">
    100         delete from users
    101         <where>
    102             <foreach collection="ids" open="id in(" close=")" separator="," item="id">
    103                 #{id}
    104             </foreach>
    105         </where>
    106     </delete>
    107     
    108     
    109     <delete id="deleteByIds2">
    110         delete from users where id in
    111         <foreach collection="ids" open="(" close=")" separator="," item="id">
    112             #{id}
    113         </foreach>
    114     </delete>
    115     
    116     
    117 </mapper>
  • 相关阅读:
    hackrank Sorting Array of Strings
    c programming create a file
    spine unity3D(摘自博主softimagewht)
    实现鼠标双击(OnGUI)
    使用Unity NGUIInputField组件输入时发现显示为白色就是看不到字体
    NGUI制作可滚动的文本框(摘,如有侵权,联系删除)
    Unity3d 简单的小球沿贝塞尔曲线运动(适合场景漫游使用)
    MVC简单随笔
    Unity脚本自动添加注释脚本及排版格式
    树和树的分类
  • 原文地址:https://www.cnblogs.com/murmansk/p/11442894.html
Copyright © 2020-2023  润新知