【Java】基于【Mybatis】框架学习系列——动态SQL

本文详细介绍MyBatis中的动态SQL技术,包括OGNL表达式的使用、动态标签if、set和choose的应用场景及示例代码,并通过具体测试案例验证其功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🚀个人主页:Ali,S

📆 最近更新:2022年7月2日

⛽ Java框架学习系列:Mybatis框架

⛳ Java基础学习系列:面向对象飞机大战

🏆 通信仿真学习系列:【硬件】【通信】【MATLAB】

🍄 个人简介:通信工程本硕🌈、Java程序员🚴。目前只会CURD😂

💌 点赞 👍 收藏 💗留言 💬 都是我最大的动力💯

在这里插入图片描述


前言

Mybatis的强大特性之一就是使用了动态SQL,使用JDBC或者其他框架时,需要根据不同的查询条件拼接SQL语句进行多字段的数据操作,操作十分繁琐,为解决这种复杂的SQL语句的编写,Mybatis提供了强大的动态SQL进行完善系列操作。


一、OGNL表达式

关系 OGNL
与关系 m1 and m2
或关系 m1 or m2
相等关系 m1 == m2或者m1 eq m2
不等关系 m1 != m2或者m2 neq m2
大于关系 m1>m2或者m1 gt m2
小于关系 m1<m2或者m1 lt m2
大于等于关系 m1>=m2或者m1 gte m2
小于等于关系 m1<=m2或者m1 lte m2
取反 !m1或者not m1

二、动态SQL

1.动态标签if

if标签是最常用的标签之一,在查询、删除、更新操作时经常被被使用到,必须是和test属性联合使用。

<select id="selectDynamic1" parameterType="com.entity.Student"
            resultType="com.entity.Student">
        select <include refid="BASE_COlUMN"/> from Student
        <where>
            <if test="name!=null and name!=''">
                and name like concat('%',#{
   
   name},'%')
            </if>
            <if test="address!=null and address!=''">
                and address like concat('%',#{
   
   address},'%')
            </if>
        </where>
    </select>

在实体类映射文件中,写上述查询操作,使用动态SQL语句中的if标签,配合test属性进行联合操作,判断name、address属性值非空并不为‘’,使用like关键字进行模糊匹配。需要注意的是在select语句中的条件可以改为下面的代码,并且不使用where关键字而是使用<where>标签。

    <select id="selectDynamic1" parameterType="com.entity.Student"
            resultType="com.entity.Student">
        select <include refid
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武林盟主8618

你的鼓励将是我前进的最好动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值