Mybatis 访问实体类的内部类,根据业务裁剪实体类的字段
Posted Himmelbleu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis 访问实体类的内部类,根据业务裁剪实体类的字段相关的知识,希望对你有一定的参考价值。
有时候一个实体类与另一个实体类进行关联,如一对多、一对一的情况。这时候,因业务需求,可能被关联的实体类不需要所有的字段,而需要根据业务进行裁剪。
这个时候,定义实体类的内部类就可以达到这一目的(至少我是这样做的)。如下代码,我的实体类中拥有一对一、一对多的实体类。我 pojo 包下其实也有一个 Buch 实体类,但是那个实体类的字段和数据库的所有字段对应,远比这个实体类下的内部类字段更多。
@Data
public class BuchCollection
private int id;
private String collectDate;
private Buch buch;
private Publisher publisher;
private List<Author> authors;
@Data
public static class Buch
private int id;
private String name;
private String profile;
private float price;
private float discount;
private String cover;
@Data
static class Author
private String author;
@Data
static class Publisher
private int id;
private String name;
内部类如果要在其他 java 代码中访问,就必须 public 公开,如果只是用在 mybatis 的 result 结果集映射的时候可以不需要。
!!定义的内部类必须是 static 静态的。
<resultMap id="rs1" type="BuchCollection" autoMapping="true">
<id column="id" property="id"/>
<association property="buch" javaType="com.buchstadt.pojo.BuchCollection$Buch" columnPrefix="b_"
autoMapping="true"/>
<association property="publisher" javaType="com.buchstadt.pojo.BuchCollection$Publisher" columnPrefix="p_"
autoMapping="true"/>
<collection property="authors" ofType="com.buchstadt.pojo.BuchCollection$Author" columnPrefix="ba_"
autoMapping="true"/>
</resultMap>
在 Myabtis 的 xml 标签内,访问实体类的内部类必须要写完整的路径,并通过 $
访问内部类。
以上是关于Mybatis 访问实体类的内部类,根据业务裁剪实体类的字段的主要内容,如果未能解决你的问题,请参考以下文章