mybatis使用xml中的if-else/choose

最近需要使用 xml 文件来实现一些增删改查,此文对 其中的 if-else 加以说明

背景:
有一个引用类,假设叫 Student

public class Student {

private String name;
private String address;
private Integer yn;

}

现在我们查询条件也被封装成一个引用类,例如:

public class StudentQueryModel {

private String name;
private String address;
private Integer pageIndex;
private Integer pageSize;
private Integer beginIndex;

}

那么使用 xml 怎么来使用和接收呢?
首先肯定是在 mapper 里面有一个方法

    List<Student> getStudentByCondition(@Param("s") StudentQueryModel model);

然后在 xml 文件中写这个方法的具体实现

<select id="getStudentByCondition"
            parameterType="入参类型,那么我们这里就应该是 com.xxx.xxx.StudentQueryModel "
            resultType="返回值类型,注意,我们虽然查询的是一些数据,也就是List,但是这里不能写 java.util.List  而是写  com.xxx..xxx.Student ,如果只想查一条数据,依旧是 com.xxx..xxx.Student ">
        select * from t_student
        WHERE
        yn = 1
注意,这里最好不要用 <if></if> 标签,写不好就是坑很多,用 choose也是一样的效果
        <choose>
            <when test=s.name != null and s.name != ''">
                and t_student.name = #{s.name}
            </when>
        </choose>

        <choose>
            <when test="s.address != null and s.address != ''">
                and t_student.address = #{s.address}
            </when>
        </choose>

        limit #{s.beginIndex}, #{s.pageSize};//这里最好是在外面算出来,在调用该方法之前就将这两个值算好放到 model 中 不要在这里进行加减乘除的运算,弄不好也有坑

    </select>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XMLchoose标签主要用于条件查询,在mybatisxml文件一般与when标签结合使用choose标签按照when标签的顺序来执行,如果有一个when满足条件,那么choose结束。如果所有的when都执行的结果都为false,那么会执行otherwise标签里的语句。 在给定的示例代码choose标签用于根据不同的条件查询sys_user表的数据。首先判断参数id是否有值,如果有值则使用id进行查询。如果id没有值,则判断用户名userName是否有值,如果有值则使用用户名进行查询。如果用户名也没有值,则使SQL查询无结果。 所以,根据这个选择标签的配置和查询需求,在执行查询时会根据不同的条件选择不同的查询方式。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [MyBatischoose标签的用法](https://blog.csdn.net/qq_36976201/article/details/115985514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [SSM框架的学习与应用-Java EE企业级应用开发学习记录-(第六天)初识Spring框架](https://download.csdn.net/download/m0_53659738/88275704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值