使用mybatis-plus进行web应用开发时,遇到的问题

我们项目在使用springboot和mybatis-plus进行web应用开发时,遇到一个很奇怪的问题。
服务在调用service的方法,通过主键来查询数据时,会出现错误的sql。

@RestController
public class AController {
    private final  AService aService;

    @GetMapping("/asdf/{id}")
    public R<AVo> getAById(@PathVariable("id") Long id) {
        return R.ok(aService.getById(id));
    }
}

@Service
public class AServiceImpl extends ServiceImpl<AMapper, A> implements AService {
    @Autowired
    private BService bService;

    @Override
    public AVo getById(Long id) {
        AVo vo = new AVo();
        C c= bService.getById(id);
        return vo;
    }
}

service的实现继承了mybatis-plus的类com.baomidou.mybatisplus.extension.service.impl.ServiceImpl,

mybatis-plus的实现
    default T getById(Serializable id) {
        return this.getBaseMapper().selectById(id);
    }
@RestController
public class BController {
    private final  BService bService;

    @GetMapping("/{mj}")
    public R getById(@PathVariable("mj" ) Long mj) {
        return R.ok(bService.getById(mj));
    }
}

@Service
public class BServiceImpl extends ServiceImpl<BMapper, B> implements BService {
    @Override
    public List<Map<String, Object>> getByYwhs(String ywhs) {
        return this.baseMapper.getByYwhs(ywhs);
    }

    @Override
    public List<Map<String, Object>> getByIds(String ids, String zt) {
        Map<String, Object> params = new HashMap<>(4);
        params.put("IDS", ids);
        params.put("ZT", zt);
        return this.baseMapper.getByids(params);
    }
}

当我访问这个Acontroller的/asdf/{id}接口时,通过AService会调用到BService的方法getById。
正常情况下,日志输出的sql语句应该是:select id,mj,mark from b where id=xx
但实际输出的sql如下:select id,mj,mark from b where mj=xx
难道就是因为我在BController写了一个带有这个注解@GetMapping("/{mj}")的接口吗?

经过排查发现,是同事在这个B的实体类上把注解@TableId写错位置了,把这个注解写到了mj字段上,实际应该在id字段上,经过修改后,程序运行正常了。哈哈!以下是修改正确的实体类:

public class B extends Model<B> {

        @TableId
        private Long id;

        private Long mj;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值