mybatis使用xml中的if-else/choose

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

背景:

有一个引用类,假设叫 Student

java 复制代码
public class Student {

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

}

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

java 复制代码
public class StudentQueryModel {

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

}

那么使用 xml 怎么来使用和接收呢?

首先肯定是在 mapper 里面有一个方法

java 复制代码
    List<Student> getStudentByCondition(@Param("s") StudentQueryModel model);

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

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>
相关推荐
handsome_sai4 小时前
【Java 线程池】记录
java
大学生资源网4 小时前
基于springboot的唐史文化管理系统的设计与实现源码(java毕业设计源码+文档)
java·spring boot·课程设计
guslegend5 小时前
SpringSecurity源码剖析
java
roman_日积跬步-终至千里5 小时前
【人工智能导论】02-搜索-高级搜索策略探索篇:从约束满足到博弈搜索
java·前端·人工智能
大学生资源网6 小时前
java毕业设计之儿童福利院管理系统的设计与实现(源码+)
java·开发语言·spring boot·mysql·毕业设计·源码·课程设计
JasmineWr6 小时前
JVM栈空间的使用和优化
java·开发语言
Hello.Reader6 小时前
Flink SQL DELETE 语句批模式行级删除、连接器能力要求与实战避坑(含 Java 示例)
java·sql·flink
爱笑的眼睛116 小时前
从 Seq2Seq 到 Transformer++:深度解构与自构建现代机器翻译核心组件
java·人工智能·python·ai
Spring AI学习6 小时前
Spring AI深度解析(10/50):多模态应用开发实战
java·spring·ai
小鸡脚来咯7 小时前
Redis与MySQL双写一致性(实战解决方案)
spring·oracle·mybatis