项目场景:
有时候业务层未进行条件处理那么在sql怎么操作呢,这里我是将c#版本的代码改成Java版本的时候出现的问题,因为c#没有业务层 更多操作是在sql中实现的 也就是业务层和编写sql地方一起写了,当我按照c#代码改Java到写sql时发现<if>标签不能实现我们业务逻辑if-else的作用 这就使用到了<choose><when><otherwise>这三个标签
解决方案:
以下是使用方法
通过这个简单的图片可以看到C#可以直接将业务逻辑和sql一起写
下面是mybatis的标签用法
<select id="getSevenTempIndoor" resultType="com.dk.entity.TempIndoorInfo">
<choose>
<when test="startime != null and !startime.isEmpty() and stoptime != null and !stoptime.isEmpty()">
SELECT
TempIndoor,
Record_Time
FROM
Temp
WHERE
DID = #{did}
AND Record_Time BETWEEN #{startime} AND #{stoptime}
ORDER BY
Record_Time
</when>
<otherwise>
SELECT
TempIndoor,
Record_Time
FROM
Temp
WHERE
DID = #{did}
AND datediff(dd, Record_Time, getdate()) <= 7
ORDER BY
Record_Time
</otherwise>
</choose>
</select>