ibatis 学习笔记 4
这篇实践一下一对一、一对多两种关系的映射操作,首先建立数据库
一共三张表 分别为 person表 card表 address表
关系是person有一个card,多个address数据
address表
address_id address_name address_person
1 nb 1
2 hz 1
3 bj 1
card表
card_id card_info
1 vip
person表
person_id person_name person_card_id
1 pf 1
新建一个工程,目录结构如下:
需要添加的jar包:
ibatis-3-core-3.0.0.242.jar
dglib-nodep-2.2.jar
asm-1.4.1.jar
ojdbc14_g.jar
可以在http://www.findjar.com/index.x这个网址上搜到相关jar包
SqlMapConfig.xml
相关的pojo
PersonDAO.java
package cn.pf.ibatis.dao;
import java.util.List;
import cn.pf.ibatis.domain.Person;
/**
* ...
* @author pf
* @version 2010-3-22下午11:11:30
*/
public interface PersonDAO {
public List queryAllPerson();
}
test.java
跟踪变量的时候发现personList = personDAO.queryAllPerson();语句并没有将card和address属性查出,均为null,在后面for循环输出的时候才进行赋值,但是又发现一个问题,test.java代码段中for循环输出前以前调用session.close(),按照hibernate的理解应该不能懒加载了,可是居然可以,而使用session.getConnection().close();直接关闭链接就无法查出card和address属性。不明白session.close()关闭了什么东西。。。
发现ibatis还有很多事情是需要自己动手编码完成的,hibernate自动化程度就高很多了,还是喜欢hibernate一点,ibatis 还有很多没搞明白,继续找资料,继续学习。