对于mybatis之sql执行有数据但返回结果为null感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍mybatis查到数据返回null,并为您提供关于Java可选,如果object不为nul
对于mybatis之sql执行有数据但返回结果为null感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍mybatis查到数据返回null,并为您提供关于Java可选,如果object不为null-返回方法结果,如果为null-返回默认值、Json返回结果为null属性不显示解决方法、logback 打印mybatis sql mybatis 日志打印sql语句和返回结果、mybatis 一对多返回结果多的问题的有用信息。
本文目录一览:- mybatis之sql执行有数据但返回结果为null(mybatis查到数据返回null)
- Java可选,如果object不为null-返回方法结果,如果为null-返回默认值
- Json返回结果为null属性不显示解决方法
- logback 打印mybatis sql mybatis 日志打印sql语句和返回结果
- mybatis 一对多返回结果多的问题
mybatis之sql执行有数据但返回结果为null(mybatis查到数据返回null)
https://wenku.baidu.com/view/5bac99074b2fb4daa58da0116c175f0e7dd1194b.html
最近在使⽤mybatis查询数据库时,发现在pl/sql中单独执⾏sql时结果是有值的,但是在程序中拿到的却是null,相关配置如下:
(1)
<resultMap type="monitorTaskStatus" id="monitorTaskStatusMap">
<result column="BATCH_NUM" property="batchNum"/>
<result column="TASK_STATUS" property="taskStatus"/>
<result column="CALLED_PHONENUM" property="calledPhoneNum"/>
</resultMap>
(2)
<select id="queryStatusByProjectId" parameterType="java.lang.String" resultType="monitorTaskStatusMap">
select b.batch_num, c.called_phonenum,c.task_status
from cc_call_task c
left join cc_batch_calledperson b
on c.batch_id = b.batch_id
where b.batch_type in (2, 3)
and c.task_status != 5
<if test="value != null and value != ''">
and c.project_id = #{value}
</if>
</select>
(3)
java:
List<TaskStatus> callTasks = service.queryStatusByProjectId(projectId);
debug时发现callTasks.size()=1,但是值却是null,最后搞了半天才发现原来(1)中<select>标签的resultType属性使⽤错误,改成
resultMap即可
究其原因是,MyBatis中在查询进⾏select映射的时候,返回类型可以⽤resultType,也可以⽤resultMap,resultType是直接表⽰返回类
型的,⽽resultMap则是对外部resultMap标签的引⽤(如本例中的(1)),但是resultType跟resultMap不能同时存在。在MyBatis进⾏查询
映射的时候,其实查询出来的每⼀个属性都是放在⼀个对应的Map⾥⾯的,其中键是属性名,值则是其对应的值。当提供的返回类型属性是
resultType的时候,MyBatis会将Map⾥⾯的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每⼀个查询映射的返
回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对⾃动的给我们把对应的值赋给resultType所指定对
象的属性,⽽当我们提供的返回类型是resultMap的时候,因为Map不能很好表⽰领域模型,我们就需要⾃⼰再进⼀步的把它转化为对应的
对象,这常常在复杂查询中很有作⽤。(包括如本例中的表关联查询等等情况)
终上所述,本例中错误的原因在于已经⾃定义了<resultMap>中id为monitorTaskStatusMap的结果集,⽽需求也是要引⽤这个,正确的
是应该⽤resultMap指定,我却⽤了resultType。。。
最后可以简要概括两点:
1.当进⾏单表简单查询时且返回值类型是基本类型时,⼀般尽量使⽤resultType;
2.当进⾏表关联查询时,或者说xml中定义了相关的resultMap标签,那么就⼀般尽量使⽤resultMap;
3.resultType和resultMap不能同时使⽤。
--------------------------------------------------------
作者:日太光明初之010
链接:https://wenku.baidu.com/view/5bac99074b2fb4daa58da0116c175f0e7dd1194b.html
来源:百度文库
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Java可选,如果object不为null-返回方法结果,如果为null-返回默认值
是否可以将此代码转换为Java 8可选单行表达式?
long lastPollTime;
if (object != null) {
lastPollTime = object.getTime();
} else {
lastPollTime = 0;
}
即如果某个对象不为空,我需要调用一个对象方法并返回其结果,否则返回0。
Optional.ofNullable().orElse()
不适合,因为它返回相同类型的对象,但是我需要方法调用的结果或一些默认值。
Json返回结果为null属性不显示解决方法
返回时null属性不显示:String str = JSONObject.toJSONString(obj);
返回为null属性显示:String str = JSONObject.toJSONString(obj,SerializerFeature.WriteMapNullValue);
Fastjson的SerializerFeature序列化属性
QuoteFieldNames———-输出key时是否使用双引号,默认为true。
WriteMapNullValue——–是否输出值为null的字段,默认为false。
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null。
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null。
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null。
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null。
举例如下:
@Bean
public HttpMessageConverters fastJsonConfigure() {
FastJsonHttpMessageConverter converter = new MyFastJsonHttpMessageConverter();
converter.setSupportedMediaTypes(supportedMediaTypes);
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteDateUseDateFormat);
fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue);
converter.setFastJsonConfig(fastJsonConfig);
return new HttpMessageConverters(converter);
}
logback 打印mybatis sql mybatis 日志打印sql语句和返回结果
<divid="content_views"> <h2><a name="t0"></a>logback 打印sql语句:</h2>
<p>在logback日志文件中开启debug模式</p>
<prename="code"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><logger name=<span>"com.ibatis"</span> level=<span>"DEBUG"</span> /></div></div></li><li><div><divdata-line-number="2"></div></div><div><div><logger name=<span>"com.ibatis.common.jdbc.SimpleDataSource"</span> level=<span>"DEBUG"</span> /></div></div></li><li><div><divdata-line-number="3"></div></div><div><div><logger name=<span>"com.ibatis.common.jdbc.ScriptRunner"</span> level=<span>"DEBUG"</span> /></div></div></li><li><div><divdata-line-number="4"></div></div><div><div><logger name=<span>"com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate"</span> level=<span>"DEBUG"</span> /></div></div></li><li><div><divdata-line-number="5"></div></div><div><div><logger name=<span>"java.sql.Connection"</span> level=<span>"DEBUG"</span> /></div></div></li><li><div><divdata-line-number="6"></div></div><div><div><logger name=<span>"java.sql.Statement"</span> level=<span>"DEBUG"</span> /></div></div></li><li><div><divdata-line-number="7"></div></div><div><div><logger name=<span>"java.sql.PreparedStatement"</span> level=<span>"DEBUG"</span> /></div></div></li><li><div><divdata-line-number="8"></div></div><div><div><logger name=<span>"java.sql.ResultSet"</span> level=<span>"DEBUG"</span> /></div></div></li><li><div><divdata-line-number="9"></div></div><div><div><logger name=<span>"你的dao的包名"</span> level=<span>"DEBUG"</span> /></div></div></li></ol></code><divdata-title="登录后复制" onclick="hljs.signin(event)"></div></pre>
<h2><a name="t1"></a>打印sql返回结果:</h2>
<p>在mybatis-config.xml中开启:</p>
<prename="code"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><settings></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <setting name=<span>"logImpl"</span> value=<span>"STDOUT_LOGGING"</span>/></div></div></li><li><div><divdata-line-number="3"></div></div><div><div></settings></div></div></li></ol></code><divdata-title="登录后复制" onclick="hljs.signin(event)"></div></pre>
<p> </p> 原文地址:https://blog.csdn.net/qq_25825923/article/details/84255579 </div>
mybatis 一对多返回结果多的问题
只要把从表 id 查出来就可以了
关于mybatis之sql执行有数据但返回结果为null和mybatis查到数据返回null的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Java可选,如果object不为null-返回方法结果,如果为null-返回默认值、Json返回结果为null属性不显示解决方法、logback 打印mybatis sql mybatis 日志打印sql语句和返回结果、mybatis 一对多返回结果多的问题的相关信息,请在本站寻找。
本文标签: