目录mybatisresulttype返回值异常例如:resulttype="student"但是当中有些字段为空例如:数据库字段为:s_name实体类字段为namemybatisresultType="map"的常见问题一、map的key
在使用mybatis时。resulttype返回自定义的类时,可能返回的类中字段数据存在缺失。
原因是因为数据库字段和实体类字段不对应导致的。 mybatis底层 查询数据返回会更据数据库的字段和实体类的字段进行匹配,不区分大小写。但是字段不一样就无法传递值
处理方式1:
在查询时添加别名 select s_name as name from student 别名对于实体类当中的字段。
处理方式2:
返回一个resultMap map配置当中指定数据库中的列和实体类的类进行对应
<id column="s_name" jdbcType="VARCHAR" property="name"/>
在配置数据源的配置文件中,配置Mybatis的sqlSessionFactoryBean
解决方法:
resultType="map" 修改为 resultType="java.util.LinkedHashMap"
解决方法:
查询字段使用ifnull函数(可空字段较多时,不推荐)
修改mybatis配置
springmvc:
创建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>
<!-- 当返回数据类型为map,设置callSettersOnNulls会把值为null的key也返回 -->
<setting name="callSettersOnNulls" value="true"/>
</settings>
</configuration>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/META-INF/spring/mybatis-config.xml" />
<property name="mapperLocations">
<array>
<value>classpath*:/com/xxx/mapper
@Configuration
public class MybatisConfig {
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return new ConfigurationCustomizer() {
@Override
public void customize(org.apache.ibatis.session.Configuration configuration) {
configuration.setMapUnderscoreToCamelCase(true);//设置驼峰命名规则
configuration.setCallSettersOnNulls(true);
}
};
}
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程界。
--结束END--
本文标题: 关于mybatis resulttype 返回值异常的问题
本文链接: https://www.lsjlt.com/news/84.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2023-09-30
2023-09-30
2023-09-30
2023-09-30
2023-09-30
2023-09-30
2023-09-30
2023-09-29
2023-09-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0