select 返回null

数据库中没有满足条件的id 就会报
HTTP Status 500 - Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Mapper method 'org.tsinghua.cis.dao.CisMedicineDetailsIdDao.findMedicineDetailsIdByClinicIdAndBarCode attempted to return null from a method with a primitive return type (int).

   <select id="findMedicineDetailsIdByClinicIdAndBarCode" resultType="int">
       <![CDATA[
        SELECT
          a.`id`
        FROM
          `cis_medicine_details_id` AS  a
        INNER JOIN
          `cis_medicine_pricing` AS b
        ON
          a.id = b.medicine_details_id
        WHERE
          `medicine_bar_code` = ${medicineBarCode}
        AND
          `clinic_id` = ${clinicId}
        ]]>
    </select>

解决方案

1.把resultType="int" 改为resultType="Integer"

在server层 判断 if(null==参数){
做相应的操作 是赋值0还是返回null 根据需要自行编写
}

2.使用IFNULL函数

   <select id="findMedicineDetailsIdByClinicIdAndBarCode" resultType="int">
       <![CDATA[
        SELECT
          IFNULL(a.`id`,0)
        FROM
          `cis_medicine_details_id` AS  a
        INNER JOIN
          `cis_medicine_pricing` AS b
        ON
          a.id = b.medicine_details_id
        WHERE
          `medicine_bar_code` = ${medicineBarCode}
        AND
          `clinic_id` = ${clinicId}
        ]]>
    </select>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,694评论 0 4
  • 1 缓存介绍# MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL...
    七寸知架构阅读 2,173评论 2 51
  • 自从2015年6月份的“股灾”发生以来,关于成长股的风险讨论就不绝与耳。然而在此之前的半年多的“牛市”时间里,许多...
    三言九鼎阅读 364评论 0 1