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>
相关推荐
空の鱼3 小时前
java开发,IDEA转战VSCODE配置(mac)
java·vscode
P7进阶路4 小时前
Tomcat异常日志中文乱码怎么解决
java·tomcat·firefox
小丁爱养花5 小时前
Spring MVC:HTTP 请求的参数传递2.0
java·后端·spring
CodeClimb5 小时前
【华为OD-E卷 - 第k个排列 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
等一场春雨5 小时前
Java设计模式 九 桥接模式 (Bridge Pattern)
java·设计模式·桥接模式
带刺的坐椅5 小时前
[Java] Solon 框架的三大核心组件之一插件扩展体系
java·ioc·solon·plugin·aop·handler
不惑_6 小时前
深度学习 · 手撕 DeepLearning4J ,用Java实现手写数字识别 (附UI效果展示)
java·深度学习·ui
费曼乐园6 小时前
Kafka中bin目录下面kafka-run-class.sh脚本中的JAVA_HOME
java·kafka
feilieren6 小时前
SpringBoot 搭建 SSE
java·spring boot·spring
苏-言7 小时前
MyBatis最佳实践:动态 SQL
数据库·sql·mybatis