实现方式一:
mapper
List<AsLLjgcfVO> selectjgcf(@Param("rq")Date rq)
mapper.xml
<select id="selectjgcf" parameterType="string" resultType="com.bysen.mes.domain.VO.AsLLjgcfVO"> where '${rq}' between t1.ks_day and t1.end_day and '${rq}' between t2.ks_day and t2.end_day
实现方式二 (推荐)在于接收参数的类型是date,参数类型是DATE
mapper.xml
<select id="selectjgcf" parameterType="date" resultType="com.bysen.mes.domain.VO.AsLLjgcfVO"> SELECT jhcb , round(1000 * t1.jrbl * t2.sjdj/100,2) as sjcb from as_clcfb t1 left join as_cldjb t2 on t1.clmc = t2.clmc where #{rq,jdbcType=DATE} between t1.ks_day and t1.end_day and #{rq,jdbcType=DATE} between t2.ks_day and t2.end_day order by cllx </select>
不指定参数类型,date是datetime,我们要的是日期,所以指定下参数类型 更准确。
题外话
mapper.xml
<insert id="insert" parameterType="com.hs.entity.A">
insert into a (id, rq, create_time,
remark)
values (#{id,jdbcType=INTEGER}, #{rq,jdbcType=DATE}, #{createTime,jdbcType=TIMESTAMP},
#{remark,jdbcType=VARCHAR})
</insert>
数据库表结构