• 技术文章 >常见问题

    什么是mybatis动态sql

    anonymityanonymity2020-09-16 15:27:32原创9210

    MyBatis的动态SQL是指对sql语句进行灵活操作;它是基于OGNL表达式,通过if,choose,when,otherwise,trim,where,set,foreach标签,对SQL语句进行灵活拼接、组装,从而提高开发人员的效率。

    什么是动态SQL? 动态SQL有什么作用?

    mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装。

    传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误。Mybatis的动态SQL功能正是为了解决这种问题, 其通过 if, choose, when, otherwise, trim, where, set, foreach标签,可组合成非常灵活的SQL语句,从而提高开发人员的效率

    MyBatis通过 OGNL 来进行动态 SQL 的使用的。

    目前, 动态 SQL 支持以下几种标签

    示例:if语句使用

    根据 username 和 sex 来查询数据。如果username为空,那么将只根据sex来查询;反之只根据username来查询

    首先不使用 动态SQL 来书写

    <select id="selectUserByUsernameAndSex"
            resultType="user" parameterType="com.ys.po.User">
        <!-- 这里和普通的sql 查询语句差不多,对于只有一个参数,后面的 #{id}表示占位符,里面不一定要写id,
                写啥都可以,但是不要空着,如果有多个参数则必须写pojo类里面的属性 -->
        select * from user where username=#{username} and sex=#{sex}
    </select>

    上面的查询语句,我们可以发现,如果 #{username} 为空,那么查询结果也是空,如何解决这个问题呢?

    使用 if 来判断

    <select id="selectUserByUsernameAndSex" resultType="user" parameterType="com.ys.po.User">
        select * from user where
            <if test="username != null">
               username=#{username}
            </if>
             
            <if test="username != null">
               and sex=#{sex}
            </if>
    </select>

    这样写我们可以看到,如果 sex 等于 null,那么查询语句为 select * from user where username=#{username}

    以上就是什么是mybatis动态sql的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:网页源码是什么 下一篇:id是什么意思?
    PHP编程就业班

    相关文章推荐

    • mybatis属性详解• Mybatis映射文件的详解• mybatis是什么• mybatis怎么添加索引

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网