java之mybatis之动态sql

1. if 判读条件是否满足,满足将会把 sql 语句加上。

<select id="findUser" parameterType="Map" resultType="User">
        select * from t_user where 1=1 
        <if test="name!=null">
            and name like '${name}%'
        </if>
</select>

2. choose, when, otherwise -----when可以有多个

复制代码
<select id="findUser" parameterType="Map" resultType="User">
        select * from t_user where 1=1 
        <choose>
            <when test="name!=null">
                and name like '${name}%'
            </when>
            <otherwise>
                and age=23
            </otherwise>
        </choose>
    </select>
复制代码

3.where 标签 判断是否有条件成立

如果有条件则加上 where,如果没有则不加。

where元素知道插入“where”如果它包含的标签中有内容返回的话。

此外,如果返回的内容以“AND”或者"OR"开头,它会把“AND”获取“OR”去掉。

复制代码
<select id="findUser" parameterType="Map" resultType="User">
        select * from t_user 
        <where>
            <if test="name!=null">
                 name like '${name}%'
            </if>
            <if test="age>23">
                and age=23
            </if>
        </where>
    </select>
复制代码

4. trim----overrides属性使用了管道分隔的文本列表来覆写,而且它的空白也是不能忽略的。

这样的结果是移出了指定在 overrides属性里字符,而在开头插入 prefix属性中指定的字符。

<select id="findUser" parameterType="Map" resultType="User">
        select * from t_user 
        <trim prefix="order by" prefixOverrides="AND |OR ">
            <if test="age>23">
                and age desc
            </if>
        </trim>
    </select>

5. foreach ----经常使用到的功能是集合迭代,通常用在 IN条件句。

复制代码
<select id="findUser" parameterType="list" resultType="User">
        select * from t_user 
        <where>
            id in 
            <foreach collection="list" item="var" 
            open="(" close=")" separator=",">
                #{var}
            </foreach>
        </where>
    </select>
复制代码

 

posted @   Vincent-yuan  阅读(1618)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示