看源码的时候发现@ResultType只有在返回值类型为void时才会生效。
//源码参考: org.apache.ibatis.builder.annotation.MapperAnnotationBuilder#getReturnTypeif (void.class.equals(returnType)) { ResultType rt = method.getAnnotation(ResultType.class); if (rt != null) { returnType = rt.value(); }}
那么假如我的应用代码如下,请问,queryStudent如何返回Student对象?或者说@ResultType的意义是什么?
@Select("select * from Student")@ResultType(Student.class)void queryStudent();
@ResultType
注解是搭配 ResultHandler
来用的。
REF: https://mybatis.org/mybatis-3/java-api.html#mapper-annotations
This annotation is used when using a result handler. In that case, the return type is
void
so MyBatis must have a way to determine the type of object to construct for each row. If there is an XML result map, use the@ResultMap
annotation. If the result type is specified in XML on the<select>
element, then no other annotation is necessary. In other cases, use this annotation. For example, if a@Select
annotated method will use a result handler, the return type must bevoid
and this annotation (or@ResultMap
) is required. This annotation is ignored unless the method return type isvoid
.
所以你那个写法不对,起码你得定义一个 ResultHandler 出来:
@Select("select * from Student")@ResultType(Student.class)void queryStudent(StudentResultHandler resultHandler);public class StudentResultHandler implements ResultHandler { private final List<Student> students; public StudentResultHandler() { students = new ArrayList<>(); } @Override public void handleResult(ResultContext context) { Student student = (Student)context.getResultObject(); students.add(student); }}
本文向大家介绍深入理解Mybatis中的resultType和resultMap,包括了深入理解Mybatis中的resultType和resultMap的使用技巧和注意事项,需要的朋友参考一下 一、概述 MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部Res
useDefferedValue的运用场景是什么? 为什么我的这个并没有实现useDefferedValue的延迟效果(不影响input的更新) 理论上不是应该每次输入,更新新的state的时候,slowList后台重新渲染,然后input的输入是不影响的,但是如果再次输入,就会触发slowList新的渲染,抛弃旧的渲染。就类似于渲染的防抖吗? 重新找了些资料,但是也没有解决问题。。。 从结果来看
本文向大家介绍Mybatis中的resultType和resultMap查询操作实例详解,包括了Mybatis中的resultType和resultMap查询操作实例详解的使用技巧和注意事项,需要的朋友参考一下 resultType和resultMap只能有一个成立,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,resultMap解决复杂查询是的
javafx中的stage只需要一个场景,而场景只需要一个根节点<所以我想知道这个场景的主要角色是什么?这似乎是一个场景连接了两个侧面,可以直接连接,而无需中间层<我只想理解其中的逻辑。非常感谢。
主要内容:1. SQL 语句映射,2. 结果集映射,3. 关系映射为了简化 XML 的配置,MyBatis 提供了注解。我们可以通过 MyBatis 的 jar 包查看注解,如下图所示。 以上注解主要分为三大类,即 SQL 语句映射、结果集映射和关系映射。下面分别进行讲解。 1. SQL 语句映射 1)@Insert:实现新增功能 2)@Select:实现查询功能 3)@SelectKey:插入后,获取id的值 以 MySQL 为例,MySQL 在插入一条数据后
本文向大家介绍 什么是断言?应用场景?相关面试题,主要包含被问及 什么是断言?应用场景?时的应答技巧和注意事项,需要的朋友参考一下