返回boolean的mybatis查詢


注意:返回數量為0時函數返回值為false,返回數量為非零值時為true。

Java函數:

boolean hasSameServiceCode(@Param("oldDepotCd") String oldDepotCd,@Param("newDepotCd") String newDepotCd);

XML代碼:

    <select id="hasSameServiceCode" resultType="java.lang.Boolean">
        select (case when count(*)=1 then 1 else 0 end) as cnt from (
            select distinct s.service_code 
            from depot d inner join service_carrier_mapping s
            on d.carrier_code=s.handling_carrier_code
            where exists (select null from DEPOT where depot_code=#{oldDepotCd})
            and exists (select null from DEPOT where depot_code=#{newDepotCd})
            and d.depot_code in (#{oldDepotCd},#{newDepotCd}) )
    </select>

取值:

cnt=1,返回true

cnt=0,返回false

注意,如果直接寫select count(*) from XXX,因為會有0,1, >1三種情況,如果是0,返回值是false,這個沒有爭議;如果是1,返回值為true;如果是>1,返回值也為true。非零值都是true,這個是我實測了的,並不像網文 https://blog.csdn.net/qq_39039017/article/details/80700002 所說的只有1返回true,0和大於1的值都返回false。

像我上面的業務,只能在返回1時返回真,返回0或者其它值都得返回假,這就需要用case語句來轉化一下。

--2020-04-07--

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。