设置映射文件
<select id="getUsersFull" parameterType="int" resultMap="UserResultmap">
select * from user,information where user.informationid=information.id and
user.id = #{id}
</select>
<resultMap type="bean.User" id="UserResultmap">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="pass" column="pass" />
<association property="info" javaType="bean.Information">
<id property="id" column="id" />
<result property="userid" column="user_id" />
<result property="qqnum" column="qq_num" />
<result property="phonenum" column="phone_num" />
</association>
</resultMap>
- 也就是先用sql进行关联表查询,再用 resultmap进行 返回结果的封装。
这个表查询的是 user 以及其关联的信息,所以,user 的bean中要有一个字段来存储 information
package bean;
public class User{
private String id;
private String name;
private String pass;
private Information info;
public User(String id, String name, String pass) {
super();
this.id = id;
this.name = name;
this.pass = pass;
}
public Information getInfo() {
return info;
}
public void setInfo(Information info) {
this.info = info;
}
public User() {
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", pass=" + pass + ", info=" + info + ", toString()="
+ super.toString() + "]";
}
}
调用
static String resource = "config.xml";
@Test
public void test() {
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sessionFactory.openSession();
User user = session.selectOne("test.getUsersFull",1);
System.out.println(user);
session.close();
}