实体类
UserInfo.javapackage com.jxc.ibatis.pojo;
import java.util.ArrayList;
import java.util.List;public class UserInfo { private Integer uid;
private String uname;
private String upwd;
private List<Address> addressList=new ArrayList<Address>();
//----------get and set methodAddress.javapackage com.jxc.ibatis.pojo;public class Address {
private int id;
private String address;
private String code;
private UserInfo userInfo;
//----------get and set method
xml
UserInfo.xml
不知对不对,看网上的大家好像把有关联的表的xml文件都写在了一起,所以我也将Address部分写在了UserInfo.xml里<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd"><sqlMap namespace="UserInfo">
<resultMap id="result" class="com.jxc.ibatis.pojo.UserInfo">
<result property="uid" column="uid"></result>
<result property="uname" column="uname"></result>
<result property="upwd" column="upwd"></result>
<result property="addressList" column="id" select="address.findByUid"></result>
</resultMap>
<resultMap id="address_result" class="com.jxc.ibatis.pojo.Address">
<result property="id" column="id"></result>
<result property="address" column="address"></result>
<result property="code" column="code"></result>
<result property="userInfo" column="uid" select="findUserByID"></result>
</resultMap>
<!--根据ID查询-->
<select id="findUserByID" parameterClass="int" resultClass="com.jxc.ibatis.pojo.UserInfo">
select * from UserInfo where uid=#uid#
</select><!-- 关联查询 -->
<select id="address.findByUid" resultClass="com.jxc.ibatis.pojo.Address" parameterClass="int">
select * from address where uid=#uid#
</select>
<!-- Address部分 -->
<!--根据ID查询-->
<select id="findAddressByID" parameterClass="int" resultClass="com.jxc.ibatis.pojo.Address">
select * from address where id=#id#
</select>
</sqlMap>Java部分
UserInfoDao.javapublic class UserInfoDAO {
// 根据ID查询一个userinfo对象
public UserInfo findUserByID(int uid){
SqlMapClient sqlMap=SqlMap.getSqlMap();
UserInfo user=null;
try {
sqlMap.startTransaction();
user=(UserInfo)sqlMap.queryForObject("findUserByID",uid);
sqlMap.commitTransaction();
return user;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
sqlMap.endTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
//查询所有Address
public List<Address> findByUid(int uid){
SqlMapClient sqlMap=SqlMap.getSqlMap();
List<Address> addressList=null;
try {
sqlMap.startTransaction();
addressList=sqlMap.queryForList("address.findByUid", uid);
sqlMap.commitTransaction();
return addressList;
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
}
AddressDao.java// 根据ID查询一个Address对象
public Address findAddressByID(int id){
SqlMapClient sqlMap=SqlMap.getSqlMap();
Address address=null;
try {
sqlMap.startTransaction();
address=(Address)sqlMap.queryForObject("findAddressByID",id);
sqlMap.commitTransaction();
return address;
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
}
测试部分:(注释部分为NullPointerException异常部分) List<Address> list=userDao.findByUid(1);
System.out.println(list.size());
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).getAddress());
}
//System.out.println(list.get(1).getUserInfo().getUname());
AddressDao addDao=new AddressDao();
System.out.println("----------");
//System.out.println(addDao.findAddressByID(1).getUserInfo().getUname());
请大虾们看下,从UserInfo中根据ID查其所有的Address可以,但从集合中的Address取不了UserInfo,直接在Address中也获得不了UserInfo
UserInfo.javapackage com.jxc.ibatis.pojo;
import java.util.ArrayList;
import java.util.List;public class UserInfo { private Integer uid;
private String uname;
private String upwd;
private List<Address> addressList=new ArrayList<Address>();
//----------get and set methodAddress.javapackage com.jxc.ibatis.pojo;public class Address {
private int id;
private String address;
private String code;
private UserInfo userInfo;
//----------get and set method
xml
UserInfo.xml
不知对不对,看网上的大家好像把有关联的表的xml文件都写在了一起,所以我也将Address部分写在了UserInfo.xml里<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd"><sqlMap namespace="UserInfo">
<resultMap id="result" class="com.jxc.ibatis.pojo.UserInfo">
<result property="uid" column="uid"></result>
<result property="uname" column="uname"></result>
<result property="upwd" column="upwd"></result>
<result property="addressList" column="id" select="address.findByUid"></result>
</resultMap>
<resultMap id="address_result" class="com.jxc.ibatis.pojo.Address">
<result property="id" column="id"></result>
<result property="address" column="address"></result>
<result property="code" column="code"></result>
<result property="userInfo" column="uid" select="findUserByID"></result>
</resultMap>
<!--根据ID查询-->
<select id="findUserByID" parameterClass="int" resultClass="com.jxc.ibatis.pojo.UserInfo">
select * from UserInfo where uid=#uid#
</select><!-- 关联查询 -->
<select id="address.findByUid" resultClass="com.jxc.ibatis.pojo.Address" parameterClass="int">
select * from address where uid=#uid#
</select>
<!-- Address部分 -->
<!--根据ID查询-->
<select id="findAddressByID" parameterClass="int" resultClass="com.jxc.ibatis.pojo.Address">
select * from address where id=#id#
</select>
</sqlMap>Java部分
UserInfoDao.javapublic class UserInfoDAO {
// 根据ID查询一个userinfo对象
public UserInfo findUserByID(int uid){
SqlMapClient sqlMap=SqlMap.getSqlMap();
UserInfo user=null;
try {
sqlMap.startTransaction();
user=(UserInfo)sqlMap.queryForObject("findUserByID",uid);
sqlMap.commitTransaction();
return user;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
sqlMap.endTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
//查询所有Address
public List<Address> findByUid(int uid){
SqlMapClient sqlMap=SqlMap.getSqlMap();
List<Address> addressList=null;
try {
sqlMap.startTransaction();
addressList=sqlMap.queryForList("address.findByUid", uid);
sqlMap.commitTransaction();
return addressList;
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
}
AddressDao.java// 根据ID查询一个Address对象
public Address findAddressByID(int id){
SqlMapClient sqlMap=SqlMap.getSqlMap();
Address address=null;
try {
sqlMap.startTransaction();
address=(Address)sqlMap.queryForObject("findAddressByID",id);
sqlMap.commitTransaction();
return address;
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
}
测试部分:(注释部分为NullPointerException异常部分) List<Address> list=userDao.findByUid(1);
System.out.println(list.size());
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).getAddress());
}
//System.out.println(list.get(1).getUserInfo().getUname());
AddressDao addDao=new AddressDao();
System.out.println("----------");
//System.out.println(addDao.findAddressByID(1).getUserInfo().getUname());
请大虾们看下,从UserInfo中根据ID查其所有的Address可以,但从集合中的Address取不了UserInfo,直接在Address中也获得不了UserInfo
<select id="findUserByID" parameterClass="int" resultMap="result">
select * from UserInfo where uid=#uid#
</select><!-- 关联查询 -->
<select id="address.findByUid" resultMap="address_result" parameterClass="int">
select * from address where uid=#uid#
</select>
<!-- Address部分 -->
<!--根据ID查询-->
<select id="findAddressByID" parameterClass="int" resultMap="address_result" >
select * from address where id=#id#
</select>
<resultMap id="result" class="com.jxc.ibatis.pojo.UserInfo">
<result property="uid" column="uid"></result>
<result property="uname" column="uname"></result>
<result property="upwd" column="upwd"></result>
<result property="addressList" column="uid" select="address.findByUid"></result>
</resultMap><resultMap id="address_result" class="com.jxc.ibatis.pojo.Address">
<result property="id" column="id"></result>
<result property="address" column="address"></result>
<result property="code" column="code"></result>
<result property="userInfo" column="uid" select="findUserByID"></result>
</resultMap>
<!--根据ID查询-->
<select id="findUserByID" parameterClass="int" resultMap="result">
select * from UserInfo where UID=#uid#
</select><!-- 关联查询 -->
<select id="address.findByUid" resultMap="address_result" parameterClass="int">
select * from address where UID=#uid#
</select>
<!-- Address部分 -->
<!--根据ID查询-->
<select id="findAddressByID" parameterClass="int" resultMap="address_result" >
select * from address where id=#id#
</select>