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

项目场景:

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。。。。。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值