mybatis分页多条件查询指定时间段数据的sql语句

  本案例适用于mysql数据库,在数据库中时间数据类型为datetime。
使用以下sql语句将不会报错,但也得不到想要的结果;
<select id="getGuidesList" parameterType="map" resultMap="GuideResultMap" flushCache="true">
     SELECT 
     a.guide_id,a.pat_id,a.direct_reason,a.sport_direct,a.food_direct,a.drug_suggest,a.guide_time,a.memo,b.name,c.doctorName
     from (pc_healthguide a LEFT  JOIN pc_patient b on a.pat_id=b.pat_id) LEFT  JOIN pc_doctor c on a.doctor_id=c.doc_id 
    <where>
      <if  test="doctorId!=null and doctorId !='0'">
           a.doctor_id=#{doctorId}
      </if>
      <if test="name != null and name!= ''">
           and  name like concat ('%',#{name},'%')
       </if>
      <if  test="directReason!=null and directReason !=''">
         and  direct_reason=#{directReason}
      </if>
      <if test="guide_time!=null and guide_time!=''">
and guide_timebetween #{beginTime} and #{endTime}
</if>
 </where>
    <if test="start!=null and size!=null">
         limit #{start},#{size}
    </if> 
   </select>
项目运行后,select的sql语句where并没有拼接and createTime between #{beginTime} and #{endTime}这一串,正确用法这样才对:
<if  test="directReason!=null and directReason !=''">
         and  direct_reason=#{directReason}
      </if>
      <if test="beginDate!=null and beginDate!=''">
<![CDATA[   and DATE_FORMAT(guide_time, '%Y-%m-%d %H:%i:%s')>=  DATE_FORMAT(#{beginDate}, '%Y-%m-%d %H:%i:%s')   ]]>
</if>
  <if test="endDate!=null and endDate!=''">
<![CDATA[  and DATE_FORMAT(guide_time, '%Y-%m-%d %H:%i:%s') <= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%s')    ]]>
</if>
其中:beginDate和endDate为实体类的属性,guide_time为数据库中的字段名,不要搞混淆了。

Mybatis提供了四种分页方式。第一种是在Mybatis的Mapper配置文件中直接编写分页SQL语句,可以使用RowBounds来实现逻辑分页,即一次性加载满足查询条件的所有数据。但是这种方式不适合处理大量数据,可能会对数据库造成较大压力。第二种方式是通过拦截器来实现分页,可以在需要分页的select语句中动态拼接分页关键字。拦截器是Mybatis提供的一种针对不同阶段的处理拦截器,可以拦截执行器方法、参数处理、结果集处理和SQL语法构建等。这种方式的好处是可以提供统一的处理机制,不需要单独维护分页相关的功能。一些常用的分页框架如PageHelper、MyBatis-Plus和tkmybatis本质上都是通过Mybatis的拦截器进行扩展,简化了配置和开发时间。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Mybatis是如何进行分页的](https://blog.csdn.net/qq_46130027/article/details/130971173)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [Mybatis四种分页方式](https://blog.csdn.net/qq_44888133/article/details/124352231)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值