mybatis的两个坑

mybatis 查询的坑-空字段不返回

通用编辑功能,动态获取表结构,实现增删改,因为表不固定,所以字段的接收都是使用的map;但是最近发现一个表修改的时候,空字段无法获取到,详情如下:
假设如下表结构:
CREATE TABLE `test1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` varchar(6) NOT NULL DEFAULT '',
  `b` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4;

现在有一列值如下,id=1,a='a',b为null;
经过mybatis查询后,发现Map中仅仅返回了id和a两个字段及其值,b字段完全丢了;

因为在用mybatis时没有用实体作为返回(用的是Map) 因此出现了 在返回参数为null的时候 不会返回字段。

解决方案:
单独的创建一个mybatis的配置文件然后在spring-mybatis的配置文件中引入该文件。
mybatis-config.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!--解决,查询返回结果含null,没有对应字段值问题-->
        <setting name="callSettersOnNulls" value="true"/>
    </settings>
</configuration>

applicationContext-persistence.xml中的配置如下:

<!-- MyBatis配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 为了配置多数据源 将ref=dataSource 修改为ref=dynamicDataSource-->
    <property name="dataSource" ref="dynamicDataSource"/>
    <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
    <property name="typeAliasesPackage"
              value="com.ruisitech.bi.entity"/>
    <!-- 显式指定Mapper文件位置 -->
    <property name="mapperLocations">
        <!--切换数据库类型后,需要修改此处的配置文件,使用对应的数据库类型下的mapper文件-->
        <array>
            <value>classpath*:/mybatis/*.xml</value>
            <value>classpath*:/mybatis/*/*.xml</value>
        </array>
    </property>
    <property name="plugins">
         <array>  
            <bean class="com.github.pagehelper.PageInterceptor">  
                <property name="properties">  
                    <value>  
                        helperDialect = mysql
                    </value>  
                </property>  
            </bean>  
        </array>  
    </property>
    <property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>

这样用map接收返回值的时候,就可以返回所有字段了。

mybatis中分页插件-查询所有再分页

参考 这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值