1、无效列类型1111其中问题之一
就是说在oracle中参数可能传空
这里就需要在参数后面加上jdbcType=xxx,
下面举个例子 字符串与jdbcType就是这样
#{item,jdbcType=VARCHAR}
2.日期类转换与格式字符串不匹配问题
这里我主要的问题是日期类格式不对 想要去掉时分秒在和参数中的作比较
具体代码转换如下
需要注意的知识点
to_date是将字符串转成日期型
to_char是将日期型转成字符串
to_date(to_char(e.create_time, 'yyyy-mm-dd'),'yyyy-mm-dd') = to_date(#{createTime},'yyyy-mm-dd')
下面是一段具体业务代码
<select id="getFacultyHeanlth" parameterType="java.lang.String" resultType="Map">
SELECT
count(e.id) AS reported,
sum( CASE WHEN unusual_symptom = 1 THEN 1 ELSE 0 END ) AS fever,
sum( CASE WHEN unusual_symptom = 2 THEN 1 ELSE 0 END ) AS cough,
sum( CASE WHEN unusual_symptom = 3 THEN 1 ELSE 0 END ) AS angina,
sum( CASE WHEN unusual_symptom = 4 THEN 1 ELSE 0 END ) AS other,
sum( CASE WHEN body_temperature > 372 THEN 1 ELSE 0 END ) AS bodyTemperature,
sum( CASE WHEN is_touch_ill = 1 THEN 1 ELSE 0 END ) AS abnormal
FROM
epidemic_report_info e
WHERE
-- 先将其转换成字符串想要的格式 在将其转换成data类型比较
to_date(to_char(e.create_time, 'yyyy-mm-dd'),'yyyy-mm-dd') = to_date(#{createTime},'yyyy-mm-dd')
AND
e.dept_id IN
<foreach item="item" collection="deptIds" index="index" open="(" separator="," close=")">
#{item,jdbcType=VARCHAR}
</foreach>
<if test="type != null">
AND e.user_type = #{type,jdbcType=VARCHAR}
</if>
</select>