为了账号安全,请及时绑定邮箱和手机立即绑定

查询itemstock表为空指针

@Override
public ItemModel getItemById(Integer id) {
    ItemDo itemDo = itemDoMapper.selectByPrimaryKey(id);
    if (itemDo == null) {
        return null;
    }
    //操作获得库存的数量
    //!!!!!返回为空指针
    ItemStockDo itemStockDo = itemStockDoMapper.selectByItemId(itemDo.getId());

    //将dataObject->Model
    ItemModel itemModel = convertFromObject(itemDo, itemStockDo);


    return itemModel;
}
<select id="selectByItemId" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from item_stock
    where item_id = #{itemId,jdbcType=INTEGER}
</select>


正在回答

2 回答

你好,建议排查步骤如下:

debug下代码,确认itemDO内的getId()数字,并通过和自己的数据库做对比,判断下是否数据库内对应的itemDO对应的id在item stock表里没有对上

猜测你的问题应该是在创建item的时候没有把itemstock表的item id字端和item表的id字端对应上

0 回复 有任何疑惑可以回复我~
#1

qq_新_bfvBKX 提问者

找到原因了,是数据库表的问题,因为item表的id和itemshock表的item_id数据没对上(item_shock表的数值都是默认的0),导致查不到,我想是不是创建应该要创建外键关联,保证数值一样
2018-12-14 回复 有任何疑惑可以回复我~
#2

龙虾三少 回复 qq_新_bfvBKX 提问者

外键关联是数据库级别保证集联一致性的,会影响查询和插入的性能,如果你的应用逻辑写的没有错误,是不会出现有查不到的情况的,因此在互联网项目中强烈不建议使用外健,因为没有必要,多加了许多无用的消耗
2018-12-16 回复 有任何疑惑可以回复我~

我也是出现了这样的问题,命名把itemstock插入进去了,但就是获取不到,犯了一个低级错误,就是

selectByItemId的sql语句中where条件应该是item_id而不是id。。。。。。。


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

查询itemstock表为空指针

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信