Mybatis多表使用
查询:
多对一:
表A对条数据对应表B的一条数据,比如多个学生对应一个英语老师,我们要查询学生信息的同时打印出老师信息
关键词:
1、内连接
2、association
具体理解:
1、关联关系:从从表的实体类中要定义一个主表实体类的属性
2、再写sql,sql应该是内连接2张表,查询条件是a.主键=b.外键
3、resultMap:属性id:这个resultMap的唯一标识;属性type:返回的类型,应该是从表类型;属性id及result标签:从表的属性与数据库字段的映射
4、association:作用是对从表实体类中的主表类型属性的一个映射;属性property:对应从表实体类中改字段名称,属性id:对应从表中外键;属性javaType:对应该关联的主表实体类;属性id和result标签:关联的主表的属性与字段映射关系
5、select标签内,需要属性resultMap,值为上面的resultMap中的id值,sql语句提前写好即可
一对多:
表A中的一条数据,在表B中有多条关联数据;比如,一个老师对应多个学生,查询这个老师下的学生列表
关键词:
1、左外连接
2、collection
具体操作:
1、关联关系:在主表的实体类新增属性List<从表实体类型>
2、再写sql,sql应该是左外连接,主表A在左,从表B在右,查询条件是a.主键=b.外键
3、resultMap:属性id:略;属性type:主表实体类型;属性id和result:对应type主表的属性和字段映射
4、collection:作用是与主表关联的从表集合(一对多,多个,所以用list放);属性property:主表中新增的那个list属性名;opType:List的泛型类型,也就是从表的实体类型;属性id和result:从表属性和字段映射
5、select标签内,需要属性resultMap,值为上面的resultMap中的id值,sql语句提前写好即可