【发布时间】:2022-01-03 12:34:30
【问题描述】:
这是我的 myBatis 请求,它应该返回一个列表:
@Mapper
public interface ClientAccessMapper {
List<ClientAccess> findByClientAndPartnerWithAutoRenewal(@Param("clientId") Long clientId,
@Param("partner") String partner,
@Param("autoRenewal") Boolean autoRenewal);
}
<select id="findByClientAndPartnerWithAutoRenewal" resultMap="ClientAccessResult">
select * from client_access
where client_id = #{clientId}
and partner = #{partner}
<if test="autoRenewal != null">
and auto_renewal = #{autoRenewal}
</if>
order by id
</select>
有时请求返回“null”而不是空列表。 得到后我有一个检查块:
final List<ClientAccess> clientAccesses = clientAccessMapper.findByClientAndPartnerWithAutoRenewal(client, partner, true);
if (clientAccesses.isEmpty()) {/**/}
而我的clientAccesses.isEmpty() 有时会因为 null 而不是大小 = 0 的 List 而产生 NPE。
可能是什么问题?
【问题讨论】:
-
isEmpty() 应该通过空检查来保护
-
@bananas 我明白了,但我的问题是关于产生请求的结果。我正在尝试了解框架的工作原理
-
I'm trying to understand the framework's working是另一个问题。使用文档 -
我建议查看
findByClientAndPartnerWithAutoRenewal实现 -
@МаксимРыбалкин MyBatis 不会使用该映射器返回
null。必须有其他东西(例如插件)改变结果。尝试在org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(String, Object, RowBounds, ResultHandler)上设置断点,看看发生了什么。
标签: java mybatis spring-mybatis