【Mybatis】ResultMap标签

1. 标签写在mapper.xml中,是程序员控制SQL查询结果和实体类的映射关系

1.1 Mybatis默认使用AutoMapping属性

2. 使用标签时, select * from teacher

4. 使用resultMap实现关联对象(N+1)方式

4.1 N+1查询方式,先查出某个表的信息,再根据查出的这个表的信息查询其他表的信息!

4.2 与业务装配的区别:

           在service里面的代码,由mybatis完成装配!

4.3 实现步骤:

           4.3.1 在Student实现类中包含了一个Teacher对象

                    

public class Student {
private int id;
private String name;
private int age;
private int tid;
private Teacher teacher;

                     4.3.2  在TeacherMapper中提供一个查询

                               


                       4.3.3 在StudentMapper中

                     1.装配一个对象时使用

                     2. property : 在对象类中的属性名

                     3. select :通过哪个查询查询出这个对象的信息

                     4. 把当前表的哪个列的值做为参数传递给另 一个查询

                    5. 大前提使用 N+1 方式.时如果列名和属性名相同可 以不配置,使用 Auto mapping 特性.但是 mybatis 默认只会给列 专                                     配一次。






5. 使用 resultMap 实现关联单个对象(联合查询方式)

5.1 只需要编写一个SQL,在StudentMapper中添加下面效果

      5.1.1 只要专配一个对象就用这个标签

      5.1.2 此时把当成小的看待

      5.1.3 javaType 属性: 专配完以后什么类型的对象,取值是一个实体类(或者是类的别名)

      5.1.4 property属性: 是关联对象类中的 新建的对象名;


    
    
    
    
    
        
        
    

 

6. N+1 方式和联合查询方式对比

6.1 N+1:需求不确定时.

6.2 联合查询:需求中确定查询时两个表一定都查询.

缺点:效率低

适用场景: 有的时候需要查询学生同时查询老师,有的时候只 需要查询学生

你可能感兴趣的:(javaEE_学习,mybatis)