resultType 的选择——int 与 java.lang.Integer 的区别
- 1、概述
- 2、resultType介绍
- 2.1、使用int
- 2.2、使用java.lang.Integer
- 3、如何选择
- 4、总结
大家好,我是欧阳方超,可以扫描下方二维码关注我的公众号“欧阳方超”,后续内容将在公众号首发。
1、概述
在使用 MyBatis-Plus(MyBatis同理)进行数据库操作时,常常需要指定查询结果的类型。特别是在 XML 映射文件中,resultType 属性的选择至关重要。当查询的结果是一个数值时,会面临resultType=“int” 和 resultType="java.lang.Integer"两个选择,本文将探讨 resultType=“int” 和 resultType=“java.lang.Integer” 之间的区别,以及如何根据实际需求做出合适的选择。
2、resultType介绍
在 MyBatis-Plus的XML映射文件中,resultType 用于指定查询结果的类型,当查询结果为单个数值时,以下是两种常见的用法。
2.1、使用int
<select id="selectCount" resultType="int">SELECT COUNT(*) FROM users WHERE age > 30;
</select>
在这个例子中,使用了基本数据类型 int,这样是没有问题的,因为count聚合函数总会返回有效数值。
因此,这种方式适合那些可以保证查询结果一定会有值的场景,例如:
统计查询:如计算用户数量、订单数量等,这些通常会返回一个非负整数。
聚合函数:如使用 COUNT、SUM 等 SQL 函数时,通常会返回一个有效的数值。
当然以上场景中也是可以使用java.lang.Integer的。
2.2、使用java.lang.Integer
<select id="selectMaxAge" resultType="java.lang.Integer">SELECT MAX(age) FROM users WHERE gender = 'female';
</select>
在这个例子中,使用了包装类 Integer。如果查询结果为 null,则可以安全返回 null 而不会抛出异常。这种方式适合那些查询可能返回空值的场景,例如:
可选查询:如查找某个条件下的最大值或最小值,如果没有符合条件的数据,则可能返回空。
动态条件查询:当条件不确定时,可能导致没有结果,这时使用包装类可以避免异常。
上面的查询场景中如果没有符合条件的数据,会返回null,此时如果使用int来接收则会抛出异常。
3、如何选择
在选择使用哪种类型时,应考虑以下几点:
查询结果是否可能为空:
如果确定查询结果不会是 null(例如统计总数),可以使用 int。
如果查询可能返回空值(例如查找最大年龄),则应使用 java.lang.Integer。
代码可读性与维护性:
使用包装类可以提高代码的可读性,因为它清晰地表明了可能存在空值的情况。
4、总结
在 MyBatis-Plus 中正确选择 resultType 是确保应用程序稳定性的重要步骤。当查询结果为单个数值时,可根据实际场景选择使用int和java.lang.Integer。
我是欧阳方超,把事情做好了自然就有兴趣了,如果你喜欢我的文章,欢迎点赞、转发、评论加关注。我们下次见。