Mybatis:动态SQL分组查询

目录

1.  实现思路

2. 代码实现

2.1  mapper

2.2 mapper 接口

2.3 Service层

 AjaxResult对象

2.4 controller 

2.5 测试


1.  实现思路

利用Mybatis 动态SQL 拼装Group By 语句,实现单个和多个字段分组

2. 代码实现

2.1  mapper


    
        
        
        
        
        
        
        
        
    

    

2.2 mapper 接口

 /**
     * 分组查询证书信息列表
     * @param certifInfo
     * @return
     */
    public List groupCetifInfoBySelective(CertifInfoDO certifInfo);

2.3 Service层

public AjaxResult groupCetifInfo(CertifInfoDO certifInfo) {

        log.info("【分组查询证书信息】,参数:{}", certifInfo);
        if (Objects.isNull(certifInfo)) {
            log.error("【分组查询证书信息列表】参数缺失");
            AjaxResult.error("分组查询证书信息,参数缺失");
        }

        List maps = certifInfoMapper.groupCetifInfoBySelective(certifInfo);
        return AjaxResult.success(maps);
    }

 AjaxResult对象

import java.util.HashMap;
import com.ruoyi.common.core.constant.HttpStatus;
import com.ruoyi.common.core.utils.StringUtils;

/**
 * 操作消息提醒
 * 
 */
public class AjaxResult extends HashMap
{
    private static final long serialVersionUID = 1L;

    /** 状态码 */
    public static final String CODE_TAG = "code";

    /** 返回内容 */
    public static final String MSG_TAG = "msg";

    /** 数据对象 */
    public static final String DATA_TAG = "data";

    /**
     * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。
     */
    public AjaxResult()
    {
    }

    /**
     * 初始化一个新创建的 AjaxResult 对象
     * 
     * @param code 状态码
     * @param msg 返回内容
     */
    public AjaxResult(int code, String msg)
    {
        super.put(CODE_TAG, code);
        super.put(MSG_TAG, msg);
    }

    /**
     * 初始化一个新创建的 AjaxResult 对象
     * 
     * @param code 状态码
     * @param msg 返回内容
     * @param data 数据对象
     */
    public AjaxResult(int code, String msg, Object data)
    {
        super.put(CODE_TAG, code);
        super.put(MSG_TAG, msg);
        if (StringUtils.isNotNull(data))
        {
            super.put(DATA_TAG, data);
        }
    }

    /**
     * 返回成功消息
     * 
     * @return 成功消息
     */
    public static AjaxResult success()
    {
        return AjaxResult.success("操作成功");
    }

    /**
     * 返回成功数据
     * 
     * @return 成功消息
     */
    public static AjaxResult success(Object data)
    {
        return AjaxResult.success("操作成功", data);
    }

    /**
     * 返回成功消息
     * 
     * @param msg 返回内容
     * @return 成功消息
     */
    public static AjaxResult success(String msg)
    {
        return AjaxResult.success(msg, null);
    }

    /**
     * 返回成功消息
     * 
     * @param msg 返回内容
     * @param data 数据对象
     * @return 成功消息
     */
    public static AjaxResult success(String msg, Object data)
    {
        return new AjaxResult(HttpStatus.SUCCESS, msg, data);
    }

    /**
     * 返回错误消息
     * 
     * @return
     */
    public static AjaxResult error()
    {
        return AjaxResult.error("操作失败");
    }

    /**
     * 返回错误消息
     * 
     * @param msg 返回内容
     * @return 警告消息
     */
    public static AjaxResult error(String msg)
    {
        return AjaxResult.error(msg, null);
    }

    /**
     * 返回错误消息
     * 
     * @param msg 返回内容
     * @param data 数据对象
     * @return 警告消息
     */
    public static AjaxResult error(String msg, Object data)
    {
        return new AjaxResult(HttpStatus.ERROR, msg, data);
    }

    /**
     * 返回错误消息
     * 
     * @param code 状态码
     * @param msg 返回内容
     * @return 警告消息
     */
    public static AjaxResult error(int code, String msg)
    {
        return new AjaxResult(code, msg, null);
    }
}

2.4 controller 

    /**
     * 分组查询证书信息列表
     */
    @GetMapping("/statis")
    public AjaxResult listGroup(CertifInfoDO certifInfo) {
        AjaxResult result = certifInfoService.groupCetifInfo(certifInfo);
        return result;
    }

2.5 测试

http://localhost:8081/certif/info/statis?trainMajorZh=GROUP   【中文专业分组】
http://localhost:8081/certif/info/statis?userUnit=GROUP   【用户单位分组】
http://localhost:8081/certif/info/statis?certifType=GROUP   【证书类型分组】
http://localhost:8081/certif/info/statis?certifStatus=GROUP   【证书状态分组】

Mybatis:动态SQL分组查询_第1张图片

你可能感兴趣的:(琦彦の百宝箱,mysql,mybatis,动态SQL,分组查询,Group,By)