Dubbo 集成mybatis-plus 的问题及解决方案

本文介绍了在Dubbo集成Mybatis-Plus时遇到的问题,具体表现为使用条件构造器导致RPC调用失败。解决方案是避免在Service层继承extendsServiceImpl,而是直接在Mapper接口中集成BaseMapper。通过示例展示了如何正确调用Mapper接口的方法,同时指出这种方法与不集成Dubbo时的区别。下篇将分享Mybatis-Plus的API使用和源码解析。

Dubbo 集成、mybatis-plus 实战集成:,在分享之前,先参考以下两篇文章:

Dubbo集成Boot  

boot集成mmybatis-plus

然后分享不一样的地方:      关键在于 提供Dubbo服务的也接口

1、不一样的地方主要在业务层,service 业务层不再继承 extends ServiceImpl<T,M>

为什么要这样呢,因为如继承了启动时会报错  :

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.admin.db.mapper.TaskMapper.selectById

原因:当在模块中通过dubbo的rpc来调用其他服务的方法时,不能使用mybatisplus的条件构造器wrapper来进行方法调用。因为wrapper中包含有泛型 Wrapper<T> ,会导致rpc解析失败,从而导致调用失败

解决方法:service层不用wrapper作为参数,mapper接口层集成即可:

public interface UserMapper extends BaseMapper<TblUser> {

    int deleteByPrimaryKey(Long id);
}

然后业务层调用接口时如下进行:前面加上mapper接口类


TblUser tblUser = tblUserMapper.selectById(id);

如果不和Dubbo集成,这样就行:


TblUser tblUser = selectById(id);

其实这两种方式的原理都是一样的,只不过第一种避开了Dubbo的调用过程的陷阱,下篇我们分享mybatis-plus的API使用及源码,敬请期待!
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寅灯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值