mybatis配置返回boolean类型

先大概说明一下ResultMapResultType的使用场景

  • ResultMap适用于复杂的查询,可以处理多表关联查询、嵌套查询等情况。通过ResultMap,可以更精确地控制查询结果的映射。
  • ResultType适用于简单的查询,而ResultMap适用于复杂的查询。具体使用哪种方式,取决于查询结果的结构和映射需求。

ResultType的值一般采用别名方式:

  • 对于引用数据类型,都是将大写字母转小写,如java.lang.String对应的别名是'string';HashMap对应的别名是'hashmap'
  • 对于基本数据类型,考虑到重复的问题,会在其前面加上_,如int对应的别名是'_int';boolean对应的别名是'_boolean'

在业务开发中,我们可能会遇到这样的需求:在对数据进行操作时,先判断有没有对应的记录,如果有,再进行操作。实现的方式有多种,现针对mybatis的实现进行说明。

Mapper方法

java 复制代码
//是否存在当前状态的订单
boolean existsOrder(@Param("orderStatus") String orderStatus);
xml 复制代码
<select id="existsOrder" parameterType="String" resultType="_boolean">
    select count(`id`)
    from `order`
    where `status` = #{orderStatus}
</select>

Mybatis是根据查询到的记录数进行转换的(1表示为true,0表示为false) 。然而,如果查询到多条记录(大于1),则返回的布尔值为false。

这个和mysql的版本有关系,故为了兼容版本我们可以考虑做如下sql改造使用 limit 1 限制只查一条数据。

xml 复制代码
<select id="existsOrder" parameterType="String" resultType="_boolean">
    select count(1)
     from (select 1
    	   from `order`
           where `status` = #{orderStatus} limit 1) t_
</select>

测试方法:

java 复制代码
@Test
public void testExistsOrder(){
	//如果查询到则返回true;否则返回false
	boolean existsUnfishedOrder = orderMapper.existsOrder("unfinished");
	if (existsUnfishedOrder){
		// 业务逻辑
	} else {
		throw new Exception("不存在符合条件的订单!");
	}
}
相关推荐
摇滚侠18 小时前
《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis MyBatis 概述 阅读笔记 37
spring boot·笔记·mybatis
摇滚侠18 小时前
《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis 整合 MyBatis 阅读笔记 38
spring boot·笔记·mybatis
迪飞特科技2 天前
《MyBatis 批量插入性能优化的 5 个关键参数配置》
android·性能优化·mybatis
Java小白笔记2 天前
MyBatis XML Mapper 标签与 CRUD 原理实战
xml·数据库·mybatis
weixin_461408582 天前
Mybatis-flex小记
java·开发语言·mybatis
SQL-First布道者3 天前
⚡Spring JDBC 完整体系 · 第 10 集 · 手搓 `BaseCondition`
java·spring boot·后端·spring·mybatis·spring jdbc
南城以南溫暖如初1473 天前
社交裂变商城系统设计与实战开发指南
java·spring boot·mysql·vue·mybatis
南城以南溫暖如初1473 天前
分享返现商城系统开发实战:技术架构与运营经验指南
java·spring boot·mysql·架构·vue·mybatis
南城以南溫暖如初1473 天前
社群电商实战指南:从零搭建高转化社区的技术架构
java·spring boot·mysql·系统架构·vue·mybatis
南城以南溫暖如初1473 天前
会员返利商城系统开发实战:架构设计与实现指南
java·spring boot·mysql·vue·mybatis