mybatis返回map数据空值字段不显示
查询sql添加每个字段的判断空
1
|
IFNULL(rate, '' ) as rate |
ResultType利用实体返回
不用map
springMVC+mybatis查询数据
返回resultType=”map”时,如果数据为空的字段,则该字段省略不显示,可以通过添加配置文件,规定查询数据为空是则返回null。
1
2
3
4
5
6
7
8
|
<? xml version = "1.0" encoding = "UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL MAP Config 3.1//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> < configuration > < settings > < setting name = "callSettersOnNulls" value = "true" /> </ settings > </ configuration > |
spring-mybatis.xml
1
2
3
4
5
6
7
|
<!-- spring和MyBatis完美整合,添加mybatis的配置映射文件 --> < bean id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" > < property name = "dataSource" ref = "dataSource" /> < property name = "configLocation" value = "classpath:mybatis-configuration.xml" /> <!-- 自动扫描mapping.xml文件 --> < property name = "mapperLocations" value = "classpath:mapping/*.xml" ></ property > </ bean > |
如果想要配置rate的默认值,例如“”字符串,则可以建立一个类,实现Mybatis的TypeHandler接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class EmptyStringIfNull implements TypeHandler<String> { @Override public String getResult(ResultSet rs, String columnName) throws SQLException { return (rs.getString(columnName) == null ) ? "" : rs.getString(columnName); } @Override public String getResult(ResultSet rs, int columnIndex) throws SQLException { return (rs.getString(columnIndex) == null ) ? "" : rs.getString(columnIndex); } @Override public String getResult(CallableStatement cs, int columnIndex) throws SQLException { return (cs.getString(columnIndex) == null ) ? "" : cs.getString(columnIndex); } @Override public void setParameter(PreparedStatement ps, int arg1, String str, JdbcType jdbcType) throws SQLException { }} |
在sql.xml文件定义与使用如下如下
1
2
3
4
5
|
< resultMap id = "find" type = "java.util.LinkedHashMap" > < result property = "name" column = "name" /> < result property = "phone" column = "phone" /> < result property = "rate" column = "rate" typeHandler = "com.mybatis.EmptyStringIfNull" /> </ resultMap > |
mybatis返回map空值未返回字段
mybatis 开启CallSettersOnNulls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@Bean public SqlSessionFactory sqlSessionFactoryBean() throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource()); Configuration configuration = new .Configuration(); configuration.setCallSettersOnNulls( true ); //map返回空字段消失问题 PageInterceptor pagePlugin = new PageInterceptor(); JalorResultSetInterceptor jalorResultSetPlugin = new JalorResultSetInterceptor(); ProgramInterceptor programPlugin = new ProgramInterceptor(); //添加插件 sqlSessionFactoryBean.setPlugins( new Interceptor[] {pagePlugin, jalorResultSetPlugin, programPlugin}); sqlSessionFactoryBean.setConfiguration(configuration); return sqlSessionFactoryBean.getObject(); } |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/lulidaitian/article/details/70941769