后端开发小技巧 (五)

后端开发小技巧 (五)

1. Mapper层 一些常用的SQL语句

1.1查询当天的记录+条数
    <select id="selectToday" resultType="java.lang.Integer">
        SELECT *
        FROM 表
        WHERE to_char(create_time, 'YYYY-MM-DD HH24:MI:SS') = to_char(NOW(), 'YYYY-MM-DD HH24:MI:SS')
    </select>
    <select id="selectToday" resultType="java.lang.Integer">
        SELECT COUNT(*)
        FROM 表
        WHERE to_char(create_time, 'YYYY-MM-DD HH24:MI:SS') = to_char(NOW(), 'YYYY-MM-DD HH24:MI:SS')
    </select>
1.2 查询最近10条记录
    <select id="selectlately" resultType="cn.piesat.sar.entity.TaskInfo">
        SELECT 字段
        FROM 表  ORDER BY create_time DESC  LIMIT 10 offset 0
    </select>
1.3 查询最近3天的记录
  <select id="selectday" resultType="cn.piesat.sar.entity.TaskInfo">
   select * from sar_task_workflow_relation 
where to_date(create_time,'YYYY-MM-DD HH24:MI:SS') between (now() - interval '3 Days') and now() 
</select>
1.4 查询最近一周的记录
  <select id="selectweek" resultType="cn.piesat.sar.entity.TaskInfo">

select * from sar_task_workflow_relation 
where to_date(create_time,'YYYY-MM-DD HH24:MI:SS') between (now() - interval '1 Weeks') and now() 
</select>

2. mybatis include refid="Base_Column_List"含义

<sql id="Base_Column_List" >
        collegeID, collegeName
</sql> 
 
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
       select 
        <include refid="Base_Column_List" />
        from t_notification_template
       where id = #{id,jdbcType=BIGINT}
 </select>

这个在MyBatis查询数据库的sql中经常会出现。它的在上面已经定义,作用相当于 *** ,**

Base_Column_List是固定的几个字段,而用*号的话会降低查询效率,因为后期数据库的字段会不断增加。

本文链接:https://blog.youkuaiyun.com/weixin_40569991/article/details/88724739

3. 多条件查询 实现拦截参数 ServiceImpl

  @Override
    public ServiceResult taskPlanConditionList(Map<String, Object> paramMap) {

        ServiceResult serviceResult = new ServiceResult(false);
//        if(null==paramMap || paramMap.size()==0){
//            serviceResult.setMessage("查询数据为空");
//            return serviceResult;
//        }
        if(null!=paramMap.get("pageNum")&&null!=paramMap.get("pageSize")) {
            Integer pageNum = Integer.parseInt(paramMap.get("pageNum").toString());
            Integer pageSize = Integer.parseInt(paramMap.get("pageSize").toString());
            if (!StringUtils.isEmpty(pageNum) && !StringUtils.isEmpty(pageSize)) {
                pageNum = pageSize * (pageNum - 1);
            }
            paramMap.put("pageNum", pageNum);
        }
        Integer total = mapper.queryTaskPlanConditionCount(paramMap);
        List<Map<String, Object>> dataModelList = mapper.queryTaskPlanConditionList(paramMap);
        Map<String, Object> result = new HashMap<>();

//        去重 java8 新特性
//        start 去重记录
//        List<Map<String, Object>> unique = dataModelList.stream().distinct().collect(Collectors.toList());
//        System.out.println(unique.toString());
//        end

        if(dataModelList.size()>0 && null!= dataModelList){
            result.put("list", dataModelList);
            result.put("total", total);
            serviceResult.setSuccess(true);
            serviceResult.success(result,"查找成功",0);
        }else {
            serviceResult.success(result,"查找失败",-1);
        }
        return serviceResult;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值