测试类
public class Demo01 {
SqlSession session;
@Before
public void before() throws IOException {
System.out.println("before....获取session");
//读取配置文件
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
//通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//通过SqlSessionFactory创建SqlSession
session = sessionFactory.openSession();
}
@After
public void after(){
session.close();
}
//懒加载
@Test
public void test10() throws IOException {
OrderMapper mapper = session.getMapper(OrderMapper.class);
List<Orders> list = mapper.findOrderAndUserByLazyloading();
for(Orders order : list){
System.out.println("订单信息:");
System.out.println(order);
System.out.println("订单所属的客户:");
System.out.println(order.getUser());
}
}
}
mapper类:
public interface OrderMapper {
//懒加载订单的用户数据
public List<Orders> findOrderAndUserByLazyloading();
}
xml配置:
<!-- ============= 懒加载 ==================-->
<resultMap id="orderLazyloadingRslMap" type="orders">
<id column="id" property="id"/>
<result column="note" property="note"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<!--配置查询-->
<association property="user" select="com.gyf.mapper.UserMapper.findUserById" column="user_id"/>
</resultMap>
<select id="findOrderAndUserByLazyloading" resultMap="orderLazyloadingRslMap">
SELECT * FROM orders
</select>
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"/>
<!--配置允许懒加载-->
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
<!--配置别名-->
<typeAliases>
<!--<typeAlias type="com.gyf.model.User" alias="user"></typeAlias>-->
<!--指定包名,别名就是类名,第一个字母小写-->
<package name="com.gyf.model"/>
<package name="com.gyf.vo"/>
</typeAliases>
<!-- 配置mybatis的环境信息 -->
<environments default="development">
<environment id="development">
<!-- 配置JDBC事务控制,由mybatis进行管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用dbcp连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${driverClass}"/>
<property name="url" value="${url}"/>
<property name="username" value="${name}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--告诉mybatis加载映射文件-->
<mappers>
<!--<mapper resource="com/gyf/sqlmap/User.xml"></mapper>-->
<!--第一种:写映射文件的名字-->
<!--<mapper resource="com/gyf/mapper/UserMapper.xml"></mapper>-->
<!--第二种:写类名,一定要有个映射文件与之对应
如果没有,那么在UserMapper要声明注解-->
<!--<mapper class="com.gyf.mapper.UserMapper"></mapper>-->
<package name="com.gyf.mapper"></package>
</mappers>
</configuration>