mybatis-notes:写一个简单的demo-mybatis的懒加载(延迟加载)

1. 认识一蛤什么是懒加载

什么是懒加载?所谓懒加载,简单说就是按需加载,用于查询结果存在一对一或一对多的情况,在mybatis中体现在的参数中,当要不用到这种关系的数据的时候就不向数据库查询,要用的时候才再次发送一条语句来查询,这样大大节省了数据库资源也提高了查询效率。

2. 便于理解,来个场景

上面的介绍也是很多网上很多人的说法,这样就太笼统、抽象了,举个例子:
比如我的demo中的Teacher类中属性有
t_id(int型),
t_name(String型),
stuList(List型),
其中stuList顾名思义既是这个老师教的学生的集合。
而Student类是对应的student表,里面的属性有
id(int型),
stu_name(String型),
age(int型),
t_id(int型),
其中student表中的t_id和teacher表中的t_id是对应的。
那么懒加载就来了,如果我要查询这个老师的所有信息,但是现在我还不想看他到底教哪些学生,那么后台就会先查询这个老师的除了学生表之外的信息。当我要看这个老师到底教了哪些学生时,再向数据库发送一条sql单独查询哪些学生的属性带有这个老师的t_id。

3. 具体代码实现

要用到懒加载,就要多用到两个jar包,asm和cglib:

jar

导了jar后,需要在总config.xml中进行一些配置:

    
        
        
        
        
        
        
    

其中懒加载相关的配置只有后两行,不过第一行的日志有助于跟进mabatis的执行。

然后dao中写好接口TeacherDao.java

package demo.cyj.dao;
import demo.cyj.pojo.Teacher;
public interface TeacherDao {
    public Teacher findTeacherByTname(String tname);    
}

后面就是重头了,mapperTeacherMapper.xml中的代码:





    

    
        
    

           

可以看到,这个有懒加载的查询分为了两个的id名;

而在第二条