MyBatis的学习与总结-第二篇

在说之前,先来引入为什么要这么使用。

在使用JDBC时或是SpringJDBC时,都一定还记得从结果集中一一取值再赋值给对象的痛苦,SpringJDBC还好一点,提供了一个RowMapper这个接口,可以通过匿名内部类的方式进行数据的封装,或是直接通过一个类实现它,来进行封装,都是十分不容易,并且还需要一个专门的包来管理这个实现类,对于程序员来说,代码量无疑是又增加的,所以,MyBatis也对这个接口进行一次封装,就是这次猪脚 resultMap 标签。

首先这两个标签比较常用一点,一个 id,一个 type,id 自然不用多说,是一个唯一标识,能够在下文的使用中,进行定位,type 这个标签则是指定实体类,他需要实体类的全限定类名,就假如,有这样一个实体类 UserPojo 是放在 com.mycc.pojo 中,那么type就需要 type = "com.mycc.pojo.UserPojo " 这样的方式,告诉 MyBatis 它的所在位置,就可以在编译时,进行数据的封装。


        
        
        

接着,id 就是在数据库表中,指定的主键, column 是在数据库中主键的列名,property 是在实体类中的字段名, 则是对数据库中的普通列进行的封装,column 和 property 含义和 中的 一致。

懒加载

首先说一下,懒加载是一种按需加载,当调用到某个对象时,才会去数据库进行查询。

在MyBatis 懒加载默认设置是关闭的,所以需要打开,在SqlMapConfig.xml文件中,需要加入设置


        
        
        
        
    

首先,第一个 setting 是打开 MyBatis 的懒加载特性,true:开启,false:关闭

接着第二个是选择加载的模式 true:加载对象时,加载全部属性,false:按需加载,当对象的属性被调用时,才会被加载

然后,设置完成了,还需要在UserMapper.xml 文件中继续写SQL,但是不同的是,需要在UserDetailMapper.xml写SQL。

首先,还是跟刚才的一样,先写 resultMap 


    
    
    
    


可以看到,在resultMap 标签中,多了一个新的标签 association ,这个就是关联标签,

首先第一个属性 property 指的是在实体类中,引入的实体,虽然听起来有点绕口,但是,这也是比较现实的情况,就好比如,当需要一个客户的爱好和订单信息时,爱好属性一般不可能跟订单信息放在一起,所以就需要两张来存储它们,所以也就需要两个实体来存储它们,所以就需要一个关联操作,将这个查询结果展示在一起,这就是 association 的作用,接着column,这个是指在数据库中,关联的列名,select 则是在UserMapper 接口中,被调用的方法。

public interface UserMapper{

   UserPojo selectByList(int id);

}

通过这样关联,就可以在使用的时候,将其调用。

细节:通过控制台,可以看出,懒加载在本质是两次sql查询,这也是他的特点之一。

你可能感兴趣的:(学习总结)