【Mybatis】分析SQL之choose作者

原创
小哥 3年前 (2022-11-07) 阅读数 36 #大杂烩

【Mybatis】动态SQL之choose标签

1、Pojo

package com.yczxyy.paperfree.dto.jhemr;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @author potential
 */
@Data
public class JobEmrMonitor {
    @ApiModelProperty(value = "监控代码编号")
    private String MONITOR_ITEM_CODE;
    @ApiModelProperty(value = "监控代码名称")
    private String MONITOR_ITEM_NAME;
}

2、Dao

List getMonitor1(JobEmrMonitor jobEmrMonitor);

3、Service

List getMonitor1(JobEmrMonitor jobEmrMonitor);

4、ServiceImpl

@Override
public List getMonitor1(JobEmrMonitor jobEmrMonitor) {
    return dmsZhiKongRuleDao.getMonitor1(jobEmrMonitor);
}

5、xml配置文件

    

注意:
让我们重点解释一下xml纵断面中的动力学SQL含义。
1、首先是 where标签,where标签包含 就是 查询的条件
2下一个choose标签,choose标签是 可用条件
3、when标签 是每个查询条件 当满足第一个查询条件时,直接启动查询。如果不满足第一个查询条件,请查看第二个查询条件。如果满足,将执行查询并结束程序。如果它们都不满足,则有两种情况:(1)when标签中的查询条件不符合,但必须插入参数,因此使用otherwise标签,要控制,这样就必须有一个基本条件 即otherwise只有当满足此标签中的内容时,才能进行查询,否则将报告错误;(2)若when标签中的查询条件不满足,但不需要控制必要的参数,也就是说,即使没有传入任何参数,也会返回一些内容,即返回表的所有内容。

6、Controller

@ApiOperation("监控代码/名称 字典2")
@PostMapping("getMonitorNameAndCode1")
public CommonResult getMonitorNameAndCode1(@Validated  JobEmrMonitor jobEmrMonitor){
    ArrayList list = new ArrayList<>();
    list=(ArrayList) dmsZhiKongRuleService.getMonitor1(jobEmrMonitor);
    return CommonResult.success(list);
}

7、测试

7.1 只输入 MONITOR_ITEM_CODE ,会根据MONITOR_ITEM_CODE执行动态模糊查询以返回符合条件的内容。

7.2 只输入 MONITOR_ITEM_NAME ,会根据MONITOR_ITEM_NAME进行模糊查询以返回符合条件的内容。

7.3 参数不传递任何信息 在没有的情况下,仍然会有一个返回值,即返回表的全部内容。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门