- 懒加载,按需加载,何为按需加载?方式二,多条语句查询才可能懒加载
- 还是前两篇博文的例子:我要查询name,age,cardnum,但是我在测试时没有访问查询结果里的任何一条数据,当我配置好懒加载后(默认不是的啊),方式二发出第一条sql指令后,并没有积极地去执行第二个查询,而是当我要打印cardnum这条数据时,它才进行第二次查询,也就是所谓的按需加载。有图为证
配置好懒加载后,我并未访问cardnum时,只发出一条sql指令
当我打印cardnum时,它发出了两条sql指令(按需加载)
- 懒加载配置如下:
导入cglib.jar
SqlMapConfig.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
<typeAliases>
<typeAlias type="com.yicha.entity.Person" alias="Person"/>
<typeAlias type="com.yicha.entity.Card" alias="Card"/>
</typeAliases>
<environments default="e1">
<environment id="e1">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root1205"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/yicha/entity/Person.xml"/>
<mapper resource="com/yicha/entity/Card.xml"/>
</mappers>
</configuration>