MyBatis choose、when和otherwise标签简介说明

Java-框架王 MyBatis 发布时间:2021-07-20 16:58:55 阅读数:15218 1
MyBatis 中动态语句 choose-when-otherwise其功能同Java中的switch-case-default语句相同
但是因为MyBatis没有为 if 提供对应的 else 标签
当我们需达到 if ... else 的效果时,可使用choose when otherwise标签实现

动态语句 choose-when-otherwise 语法如下
<choose>
    <when test="判断条件1">
        SQL语句1
    </when >
    <when test="判断条件2">
        SQL语句2
    </when >
    <when test="判断条件3">
        SQL语句3
    </when >
    <otherwise>
        SQL语句4
    </otherwise>
</choose>

 choose 标签按顺序判断其内部 when 标签中的判断条件是否成立,

当有一个成立,则执行相应的 SQL 语句,choose 执行结束;

当都不成立,则执行 otherwise 中的 SQL 语句 

例 UserInfoMapper.xml 代码
<mapper namespace="com.java265.mapper.UserInfoMapper">
    <select id="selectUserInfo"
        parameterType="com.java265.po.UserInfo"
        resultType="com.java265.po.UserInfo">
        SELECT id,name,notes,age
        FROM UserInfo WHERE 1=1
        <choose>
            <when test="name != null and name !=''">
                AND name LIKE CONCAT('%',#{name},'%')
            </when>
            <when test="notes != null and notes !=''">
                AND notes LIKE CONCAT('%',#{notes},'%')
            </when>
            <otherwise>
                AND age is not null
            </otherwise>
        </choose>
    </select>
</mapper>

UserInfoMapper 类中
public list<UserInfo> selectUserInfo(UserInfo userInfo);
测试类
public class Test {
    public static void main(String[] args) throws IOException {
        // 读取配置文件mybatis-config.xml
        InputStream config = Resources.getResourceAsStream("mybatis-config.xml"); // 根据配置文件构建
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
        // 通过SqlSessionFactory创建SqlSession
        SqlSession ss = ssf.openSession();
        UserInfo userInfo = new UserInfo();
        userInfo.setname("Java");
        List<UserInfo> userList = ss.selectList("com.java265.mapper.UserInfoMapper.selectUserInfo", userInfo);
        for (userInfo t : userList) {
            System.out.println(t);
        }
    }
}
输出结果--- DEBUG [main] - ==> Preparing: SELECT id,name,notes,age FROM UserInfo WHERE 1=1 AND name LIKE CONCAT('%',?,'%')
DEBUG [main] - ==> Parameters: Java(String)
DEBUG [main] - <== Total: 1
UserInfo[id=1,name=王二,notes=java爱好者,age=88]
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/MyBatis/202107/548.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者