美文网首页
MyBatis动态sql

MyBatis动态sql

作者: 我不是刺猬_ | 来源:发表于2019-10-22 20:34 被阅读0次

1)动态sql有什么作用?
在网页当中我们经常会看到勾选或去掉某个参数后,结果动态变化,省去了人工写复杂sql语句,如果达到这样的效果,则需要用mybatis提供的动态sql,以下简单介绍了几个常用多条件查询元素
条件查询:if,where...if
条件更新:update... set/trim
多条件:where...choose...when...otherwise
范围查询:in...foreach

  • if条件
<!-- if条件 -->
    <select id = "listID1" resultType = "Product">
        select * from Product_
        <if test = "id = 1">//满足if语句则加入条件
            where id = 1
        </if> 
    </select>

     Map<String, Object> params = new HashMap<>();   
    params.put("id", 1); params.put("name", "product"); params.put("price","88"); List<Product> p1 = session.selectList("whenTest",params);
    for(Product p : p1) { 
          System.out.println(p.getId() + p.getName()); 
        }

  • where条件
<!-- where条件 -->
    <select id = "whereTest" resultType = "Product">
        select * from Product_
        <where>
            <if test = "id = 1"> and id = 1</if>
            <if test = "name = 'product b'"> and name = "product b"</if>
            
        </where>
    </select>
  • 更新语句: update元素,trim元素可以用来替代set元素
<!-- update -->
    <update id = "updateTest" parameterType = "Product">
        update Product_
        <!-- <set>
            <if test = "name != null"> name = #{name},</if>
            <if test = "price != null"> price = #{price}</if>
        </set> -->
        <trim prefix = "SET" suffixOverrides = ",">
            <if test = "name != null"> name = #{name},</if>
            <if test = "price != null"> price = #{price}</if>
        </trim>
        where id = #{id}
    </update>
  • where ...choose... when ...otherwise多条件语句:
<!-- when otherwise -->
    <select id = "whenTest" resultType = "Product">
        select * from Product_
        <where>
            <choose>
                <when test = "name != null">
                    and name like CONCAT("%",#{name},"%")
                </when>
                <when test = "price != null and price != 0">
                    and price > #{price}
                </when>
                <otherwise>
                    and id > 1
                </otherwise>
            </choose>
            
        </where>
    </select>   
  • 范围查询in,foreach元素
<!-- in 用法 -->
<select id = "inTest" parameterType = "Product">
    select * from Product_ where id in 
    <foreach item = "item" index = "index" collection = "list" open = "(" separator = "," close = ")" >
      #{item}
        
    </foreach>
    
</select>   
  • bind替换:当模糊查询时,可以用 where name like #{likename},对模糊条件建立一个变量引用
<bind name = "likeName" value = "'%' + name + '%">

相关文章

  • MyBatis动态SQL

    MyBatis 动态SQL 内容 Mybatis动态SQL在XML中支持的几种标签: if chose trim、...

  • MyBatis核心知识点

    (1)Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不? Mybatis动...

  • MyBatis 动态SQL(*.xml)

    原文参考MyBatis 动态SQL MyBatis的动态SQL大大减少了拼接SQL语句时候的各种格式问题,这里摘录...

  • Mybatis动态SQL

    MyBatis Mybatis笔记连载上篇连接MyBatis缓存Mybatis笔记连载下篇连接 动态SQL 动态S...

  • MyBatis的动态SQL与日志Log4J、SQL语句构造器

    一、MyBatis动态SQL 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似...

  • MyBatis学习:动态sql

    1.动态sql 动态sql是mybatis中的一个核心,什么是动态sql?动态sql即对sql语句进行灵活操作,通...

  • mybatis的xml文件的标签详解

    Mybatis #{}和${}和区别 mybatis获取方法参数 动态SQL

  • 第八章 动态SQL

    动态SQL中的元素介绍 动态SQL有什么作用 MyBatis提供了对SQL语句动态组装的功能 动态SQL中的元素 ...

  • JavaEE基础知识学习----MyBatis(四)动态SQL

    MyBatis的动态SQL MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似...

  • IT 每日一结

    mybatis动态sql 动态sql绝对是mybatis排列前几的闪光点之一。传统代码中的sql语句需要经过多个字...

网友评论

      本文标题:MyBatis动态sql

      本文链接:https://www.haomeiwen.com/subject/crdcvctx.html