gpt4 book ai didi

java - MyBatis 动态 ResultMap。如何返回不同POJO对象的列表?

转载 作者:行者123 更新时间:2023-11-30 02:32:55 25 4
gpt4 key购买 nike

MyBatis 映射问题。

假设我们有一个表 USERS

CREATE TABLE USERS(
USER_ID int(10) NOT NULL AUTO_INCREMENT,
LOGIN varchar(100) NOT NULL,
EMAIL varchar(255),
SALARY int(10),
AVG_SCORE int(10),
PRIMARY KEY ( USER_ID )
);

有 3 个 POJO 类 -

public class User {
private Long id;
private String login;
private String email;

...getters/setters
}

还有两个扩展 User 的类

public class Student extends User {
private Integer score;
...getters/setters
}

public class Teacher extends User {
private Integer salary;
...getters/setters
}

和一个映射器(我使用 XML,但实际上这并不重要)。

<select id="selectAll" resultMap="<dynamicResultMapHere>">
SELECT * FROM USERS
<some conditions here>
</select>

我想要List<Teacher>List<Student>实例取决于 SALARY 列是否为空。

如何添加动态结果填充?

其实情况更复杂。我不知何故需要根据查询参数返回不同的结果。

最佳答案

检查documentation关于鉴别器。它将需要 resultMap对于Student的特定领域和TeacherresultMap 引用对于 User (对于公共(public)字段)和 <discriminator>部分。

可能需要伪列:

SELECT (CASE WHERE salary IS NULL THEN 1 ELSE 2 END) AS userType

然后

<discriminator javaType="int" column="userType">
<case value="1" resultMap="studentResultMap" />
<case value="2" resultMap="teacherResultMap" />
</discriminator>

关于java - MyBatis 动态 ResultMap。如何返回不同POJO对象的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43806392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com