Mybatis查询数据库返回正常但返回值部分为null

在使用Mybatis链接数据库查询时,发现返回的数据中部分值为null,原因在于数据库表的列名(如brand_name,company_name)与Java实体类的属性名(brandName,companyName)不匹配。解决方法包括在SQL语句中使用别名使列名与属性名一致,或者采用SQL片段预定义列名并包含在查询语句中。

项目场景:

Mybatis链接数据库进行查询操作

问题描述

在使用mybatis链接数据库访问表内容时发现返回数据整体时正常的,但是部分值为null

查询主代码:

List<Brand> brands=brandMapper.selectByCondition(status,companyName,brandName);     //散装参数  注意匹配语句中的参数占位符

mapper代理代码:

List<Brand> selectByCondition(@Param("status")int status, @Param("companyName")String companyName, @Param("brandName")String brandName);

对象部分代码:

    private Integer id              ;
    private String brandName      ;
    private String companyName    ;
    private Integer ordered         ;
    private String description     ;
    private Integer status          ;

sql空间代码:

    <select id="selectByCondition" resultType="com.fjx.pojo.Brand">
        select * from tb_brand
            where
                  status = #{status} and
                  company_name like #{companyName} and
                  brand_name like #{brandName}
    </select>

原因分析:

数据库表内列名与代码实体属性名称不同无法自动封装:

表中列名分别是 brand_namecompany_name,而对象里的名字为 brandNamecompanyName,两者不同无法自动封装数据,所以为null。


解决方案:

sql语句起别名和使用sql片段:

1.起别名,在sql语句中加入as使表列名与实体对应上:

select id,status,company_name as companyName,brand_name as brandName, ordered,description from tb_brand

2.sql片段,提前设置好需要替换的属性:

<!--    sql片段-->
    <sql id="sqlbrand">
        id,status,company_name as companyName,brand_name as brandName, ordered,description
    </sql>
<!--    应用sql片段-->
select <include refid="sqlbrand" />
        from tb_brand。。。。。。。。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值