1
MyBatis映射問題。MyBatis動態ResultMap。如何返回不同POJO對象的列表?
假設我們有一個表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
}
和兩個類擴展用戶
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>
實例。
如何添加動態結果填充?
其實這個情況比較複雜。我不知何故需要根據查詢參數返回不同的結果。
是否有可能有動態鑑別?我試圖添加一個通用的方法https://github.com/StanislavLapitsky/mybatis-star-dao SelectAll接受表名並提供實體類的SelectAll。這意味着我沒有固定數量的實體將它們列入'discriminator'區塊。無論如何。感謝您的建議! – StanislavL
看起來您正在綁定使用Mybatis創建ORM,而Mybatis是SQL映射器,而不是ORM。任何JPA框架都可以給你想要實現的東西帶來更加接近的答案:只需將java實體註釋爲映射表,然後CRUD操作就直截了當。 – blackwizard
我正在嘗試使用ORM和SQL映射器。我遇到了一些使用hibernate和MyBatis的項目,希望以某種方式合併它們。 – StanislavL