Expected one result (or null) to be returned by selectOne(), but found

有好久一段时间没写mybatis的xml了,出现这样的问题,写一下加深印象。

错误分析:
这个错误是因为在从数据库查出多条数据,但是接收的时候只显示一个。

解决方案:

举个例子说明问题

<resultMap id="BaseResultMap" type="net.yang.apiV1.entity.ShopFetchRange">
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="member_id" property="memberId" jdbcType="BIGINT" />
        <result column="fetch_range" property="fetchRange" jdbcType="VARCHAR" />
        <result column="longitude" property="longitude" jdbcType="DECIMAL" />
        <result column="latitude" property="latitude" jdbcType="DECIMAL" />
    </resultMap>


<select id="rangesIsExist" resultMap="BaseResultMap" parameterType="java.util.Map">
        SELECT IFNULL(id,1)  FROM shop_fetch_range where longitude=#{longitude,jdbcType=BIGINT} and member_id=#{memberId}
       and latitude=#{latitude,jdbcType=BIGINT}
</select>

在这里需要说一个bug

attempt to return null from a method with a primittive return tyep(long)

这个bug的意思返回的值是null,这个时候就需要使用 ifnull(a,1)如果a是null的话,就返回1,这样在java后台进行接收的时候就使用List接收,这样就行了。

接着说第一个bug,那个bug使用不能更改 resultType="java.util.List"因为在resultType中放的是盛放的元素,而不应该直接写容器,所以这个时候要使用自定的resultMap来写,就是上面的那种形式。

resultMap:适合使用返回值是自定义实体类的情况。

resultType:适合使用返回值得数据类型是非自定义的,即jdk的提供的类型。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,"Expected one result (or null) to be returned by selectOne(), but found: 10" 这句话代表了一种情况:你期望查询一条数据,但是实际上返回了多条数据。这可能是由以下原因引起的: 1. 数据库查询语句错误:请检查你的SQL语句是否正确,确保只返回一条数据或者null。你可以使用数据库管理工具或者命令行来验证你的SQL语句是否正确。 2. 返回值类型不匹配:请确保你的DAO接口中的返回值类型与MyBatis中的配置一致。如果你期望返回一条数据,那么返回值类型应该是一个对象或者null;如果你期望返回多条数据,那么返回值类型应该是一个列表或者集合。 3. 数据接收类型错误:请确保你在接收查询结果的地方使用了正确的数据类型。如果你期望返回一条数据,那么接收类型应该是一个对象;如果你期望返回多条数据,那么接收类型应该是一个列表或者集合。 如果你遇到了"Expected one result (or null) to be returned by selectOne(), but found: 10"这个问题,你可以按照以下步骤来解决: 1. 检查你的SQL语句,确保只返回一条数据或者null。 2. 检查你的DAO接口中的返回值类型,确保与MyBatis中的配置一致。 3. 检查你在接收查询结果的地方使用了正确的数据类型。 范例:根据提供的引用内容,"Expected one result (or null) to be returned by selectOne(), but found: 10" 这句话代表了一种情况:你期望查询一条数据,但是实际上返回了多条数据。这可能是由以下原因引起的: 1. 数据库查询语句错误:请检查你的SQL语句是否正确,确保只返回一条数据或者null。你可以使用数据库管理工具或者命令行来验证你的SQL语句是否正确。 2. 返回值类型不匹配:请确保你的DAO接口中的返回值类型与MyBatis中的配置一致。如果你期望返回一条数据,那么返回值类型应该是一个对象或者null;如果你期望返回多条数据,那么返回值类型应该是一个列表或者集合。 3. 数据接收类型错误:请确保你在接收查询结果的地方使用了正确的数据类型。如果你期望返回一条数据,那么接收类型应该是一个对象;如果你期望返回多条数据,那么接收类型应该是一个列表或者集合。 如果你遇到了"Expected one result (or null) to be returned by selectOne(), but found: 10"这个问题,你可以按照以下步骤来解决: 1. 检查你的SQL语句,确保只返回一条数据或者null。 2. 检查你的DAO接口中的返回值类型,确保与MyBatis中的配置一致。 3. 检查你在接收查询结果的地方使用了正确的数据类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值