zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    文件操作与函数
    编码格式
    if、while、for快速掌握
    运算符、数据类型、数据结构
    正则表达式
    面向对象--属性
    面向对象--对象的创建
    函数的内置属性
    类型检查
    函数表达式 及 闭包
  • 原文地址:https://www.cnblogs.com/murmansk/p/11442894.html
Copyright © 2011-2022 走看看