zoukankan      html  css  js  c++  java
  • Expected one result (or null) to be returned by selectOne() 数据库结果集和java实例

    mybatis会根据查询的结果集初始化java实例。

    如果是复杂类型,我们一般都会在mapper中做好映射。

    1.所以如果查询到的是多个结果,那么对应的java类型也必须的集合类型。(result 为泛型或者集合元素类型,dao接口必须为集合)

        如:   xml:<select id='xx' resultType='java.lang.String'>   接口:String[] xx();

    2.但是有一种,结果集虽然是多个,但是需要是一个实例。

      如:查询班级及学生 SELECT * FROM clazz LEFT JOIN student on。。。。

      我们对应java实例就是clazz即{ clazzName, student[] }。

      所以这条语句,只要不是只有一个学生那么肯定会有多条结果。但是我们需要mybatis为我们创建一个实例。

      这个也就是 resultMap,resultType 的区别。resultMap 是我们做好映射关系的,里面有collection属性,所以mybatis会为我们创建一个实例。

      如果使用resultType ,mybatis就会说:Expected one result (or null) to be returned by selectOne() 。查出来好几个,你就要一个,要哪个啊?

    所以,出现这个问题 Expected one result (or null) to be returned by selectOne()。第一是产生多个结果,我们也要多个,但是接收类型写错了。第二就是产生多个,但是我们需要一个,(因为多个结果其实对java是一个实例)那么就是映射没有做好,或者使用了resultType,而不是resultMap。

  • 相关阅读:
    Cogs 465. 挤牛奶
    洛谷P1083 借教室
    Cogs 1264. [NOIP2012] 开车旅行(70分 暴力)
    2017-10-19 NOIP模拟赛
    Codevs 2144 砝码称重 2
    洛谷P1450 [HAOI2008]硬币购物
    洛谷P2534 [AHOI2012]铁盘整理
    洛谷P1731 生日蛋糕
    2017-10-18 NOIP模拟赛
    洛谷P1074 靶形数独
  • 原文地址:https://www.cnblogs.com/ming-question/p/11760803.html
Copyright © 2011-2022 走看看