Mybatis select返回多个list,但为啥只有一条记录

问题描述

本人做一个SSM项目,发现查询数据库数据,sql没有错,在Navicat中查询也是没有问题,但 返回数据只有一条,很奇怪,看网上教程,也都是差不多的教程,按理说我的mapper文件是没错的,因为其他一样的查询却可以查询出多条数据,同样的mapper写法。

解决方法

我对比了一下两者之间的sql差异,发现可能是在mapper中返回的字段比sql中多,再想是不是这个原因造成的,也有可能是主键id索引造成,结果就返回一条数据,本着动手的能力,本人就采取以下两种方案:

  • 方案一在之前的select后面加上主键id
	<resultMap id="orderResultMap" type="com.bean.PurchaseRecord">
		<id column="id" jdbcType="SMALLINT" property="id" />
		<result column="user_id" jdbcType="SMALLINT" property="userId" /> 
		<result column="commodity_id" jdbcType="SMALLINT" property="commodityId" />
		<result column="commodity_num" jdbcType="SMALLINT" property="commodityNum" />
		<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
		<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
		<association property="commodity" column="commodityId"
			javaType="com.bean.Commodity" jdbcType="SMALLINT" resultMap="GoodResultMap">
		</association>
	</resultMap>

    <select id="selectForAll" resultMap="orderResultMap">
        SELECT purchase_record.id,purchase_record.commodity_id,commodity.url,commodity.title,
        commodity.price,purchase_record.commodity_num,purchase_record.create_time 
        from commodity,purchase_record
        WHERE commodity.id=purchase_record.commodity_id
    </select>

注意SELECT单词后面 添加了 id,查询结果正确。

  • 方案二 去掉不返回的字段定义
    在resultMap中定义了很多不返回的字段,比如 id,user_id等,于是去掉这些字段,测试也是正确的。
<resultMap id="orderResultMap" type="com.bean.PurchaseRecord">
		<result column="commodity_id" jdbcType="SMALLINT" property="commodityId" />
		<result column="commodity_num" jdbcType="SMALLINT" property="commodityNum" />
		<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
		<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
		<association property="commodity" column="commodityId"
			javaType="com.bean.Commodity" jdbcType="SMALLINT" resultMap="GoodResultMap">
		</association>
	</resultMap>

    <select id="selectForAll" resultMap="orderResultMap">
        SELECT purchase_record.id,purchase_record.commodity_id,commodity.url,commodity.title,
        commodity.price,purchase_record.commodity_num,purchase_record.create_time 
        from commodity,purchase_record
        WHERE commodity.id=purchase_record.commodity_id
    </select>

总结

可能是本人书写不规范,造成这个问题,不过也很奇怪,目前学习的mybatis知识太少,还要继续学习,更深入的原因后面也要继续学习。

社招、校招内推时刻

本人在阿里巴巴工作,业余时间做了社招、校招的公众号,可以内推大家,免筛选直接面试,公众号的一些文章也帮助大学、研究生的一些同学了解校招、了解名企,工作几年的同学想换工作也可以找我走社招内推,同时大家对文章有问题,也可以公众号找我,扫码关注哦!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值