常见的接口返回值定义方式
-
单一数据类型
这种情况下,接口返回一个具体的数据类型,比如整数、字符串、布尔值等。
例:
public int getAge();
-
自定义数据类型
接口可以定义自定义的数据类型,通常是一个类或结构体,用于封装多个数据字段。
例:
public Person getPersonInfo();
-
集合或数组
接口返回一个包含多个元素的集合或数组。
例:
public List<Book> getBookList();
-
状态码和消息
返回一个键值对的集合,可以用于存储相关联的信息。
例:
public ResultCode deleteRecord(int id);
-
异常抛出
如果出现了错误或异常情况,接口可以选择抛出异常以通知调用者。
例:
public void processFile(String filePath) throws FileProcessingException;
-
Map或Dictionary
返回一个键值对的集合,可以用于存储相关联的信息。
例:
public Map<String, Integer> getStudentGrades();
-
空值或Null
在某些情况下,接口可能不返回具体数据,而是返回一个表示空值或未定义的信号。
例:
public void clearCache();
-
泛型类型
使用泛型可以使接口更加灵活,能够返回不同类型的数据。
例:
public <T> T getData();
-
映射查询结果的配置项resultMap 和 resultType
-
resultMap
作用:resultMap 允许你自定义如何将查询结果映射到一个对象。
定义方式:resultMap 是一个可以包含多个 <id> 和 <result> 元素的 XML 元素,可以用于处理复杂的映射需求。它通常包含了对应 Java 对象的属性以及数据库表中的列之间的映射关系。
适用情况:适用于需要进行复杂的映射,例如处理关联关系、复合对象等情况。
例:
<resultMap id="userResultMap" type="User">
<id property="id" column="user_id" />
<result property="username" column="username" />
<result property="email" column="email" />
</resultMap>
-
resultType
作用:resultType 是指定单一结果对象类型,它用于简单的映射,当查询返回的结果只有一个属性时,通常会使用 resultType。
定义方式:resultType 是一个 Java 类型的完全限定名(例如 com.example.User)。它指定了查询结果应该映射到哪个 Java 对象。
适用情况:适用于简单的查询,返回结果为单一类型,例如一个整数、字符串等。
例:
<select id="getUsernameById" resultType="java.lang.String">
SELECT username
FROM users
WHERE user_id = #{id}
</select>
考虑在查询中返回其他表中大量列的值且不考虑嵌套XML配置的情况下,在实体类中增加对象,设置字段名。在XML文档中修改该方法的别名为“字段名.属性名”,通过这种方式可以直接将值赋给字段中的属性。
例:
实体类
public class SysRole {
/*在实体类SysRole中增加SysUser对象,字段名为user */
private SysUser user;
}
XML文档
<select id="selectRolesByUserId" resultType ="tk.mybatis.simple.model.SysRole">
select
r.id,
r.role_name roleName,
r.enabled,
r.create_by CreateBy,
r.create_time createTime,
<!--修改该方法的别名为“字段名.属性名”-->
u.user_email as "userEmail",
u.user_name as "userName"
from sys_user u
inner join sys_user_role ur on u.id=ur.user_id
inner join sys_role r on ur.role_id=r.id
</select>