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