栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis-Plus中@TableField失效问题及解决

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis-Plus中@TableField失效问题及解决

项目场景:

提示:这里简述项目相关背景:

学习MyBatis-Plus框架是 出现了个小BUG 特此记录一下

此注解是标注数据库映射字段 假如数据库字段为weight 但是实体类为weightXZ 则可以使用该字段映射


问题描述

因为QueryWrapper 指定了selelct字段
导致SQL可以查出值但是映射字段为NULL

 @Test
    public void testPage() {
        QueryWrapper wrapper = new QueryWrapper<>();
//        wrapper.eq("weight",4);
        wrapper.select("id","url","weight");
        //第1页,每页2条
        Page page = new Page<>(1, 2);
        IPage bannerDOIPage = bannerMapper.selectPage(page, wrapper);
        System.out.println("总条数"+bannerDOIPage.getTotal());
        System.out.println("总页数"+bannerDOIPage.getPages());
        //获取当前数据
        System.out.println(bannerDOIPage.getRecords().toString());
    }

原因分析:

未指定SELECT的语句:
SELECT id,img,url,weight AS weightXZ FROM banner

指定后语句:
SELECt id,url,weight FROM banner LIMIT ?

原因是默认情况下Mybatis-Plus会根据@TableFiled 生成别名而自己指定了QueryWrapper的select属性后就仅仅是属性值而没有了别名


解决方案:

1.XML自己写SQL
2.BEAN跟表字段名保持一致
3.不要指定QueryWrapper的select字段

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781405.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号