spring boot mybatis注解方式 数据值为null,list<map>不包含

问题症状:
mapper中返回的是List<Map<String,Object>> ,如果查询结果中某个记录的某个字段数据库中值是null,则结果集中就没有这个字段。
百度出有结果:
1、修改mybatis-config.xml文件,我的项目中没有这个文件。
2、修改数据库配置类代码文件,加写代码进去,我的项目中也没有这个代码文件。
3、在application.properties文件中加一行配置:mybatis.configuration.call-setters-on-nulls=true,还好我的项目中有这个配置文件,加上后问题解决

后续问题:另一个项目中,在application.yml中加上这个配置后不管用,没有值的字段还是返回null,经查,改下sessionFactory的配置也可解决,这个项目中使用了Druid做连接池,在其配置文件代码中加个配置代码

@Bean(name = "sqlSessionFactory")
    @Primary
    public SqlSessionFactory ds1SqlSessionFactory(@Qualifier("dataSource") DataSource dataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        sessionFactory.setTypeAliasesPackage("com.jiapeng.mainsvr.entity");
        //这个配置解决表中某字段值是null时,该字段不在返回列表中的问题
        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
        configuration.setCallSettersOnNulls(true);
        sessionFactory.setConfiguration(configuration);
//        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
//                .getResources(DatasourceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
    }

以上修改后,返回的列表就包含查询的所有字段了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值