您的位置:首页 > 其它

MyBitis(iBitis)系列随笔之四:多表(多对一查询操作)

2013-04-07 12:14 281 查看

MyBitis(iBitis)系列随笔之一:MyBitis入门实例

MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM)

MyBitis(iBitis)系列随笔之三:简单实现CRUD

MyBitis(iBitis)系列随笔之四:多表(多对一查询操作)


MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)


MyBitis(iBitis)系列随笔之六:mybitis与spring集成



前面几篇博客介绍的都是单表映射的一些操作,然而在我们的实际项目中往往是用到多表映射。至于多表映射的关键要用到mybitis的association来加以实现。

这篇介绍的是多表中的多对一表关联查询

先做一些准备工作

创建两张表:一张是用户,一张是用户所对应的移动手机,一户用户可以有部移动手机。

这是用户t_user表



这是移动电话t_mobile表



创建表对应的JavaBean对象

User对象

package com.jefry;

public class User {
private int id;
private String userName;
private String password;

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}
}


Mobile对象:

package com.jefry;

public class Mobile {
private int id;
private String telnumber;
private User user;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getTelnumber() {
return telnumber;
}

public void setTelnumber(String telnumber) {
this.telnumber = telnumber;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

}


修改configure文件对象别名:

<typeAliases>
<typeAlias alias="User" type="com.jefry.User"/>
<typeAlias alias="Mobile" type="com.jefry.Mobile"/>
</typeAliases>


修改表映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mobile">
<resultMap id="userResultMap" type="Mobile">
<id property="id" column="id"/>
<result property="telnumber" column="telnumber"/>
<association property="user" javaType="User">
<id property="id" column="id"/>
<result property="userName" column="name"/>
<result property="password" column="pass"/>
</association>
</resultMap>

<!--多表查询操作-->
<select id="selectMobile" parameterType="int"  resultMap="userResultMap" >
<!--分别为mobile的主键id与user的主键id赋值别名,避免因为两个表字段名称相同而注入到对应对象名称冲突-->
select m.id m_id,m.telnumber,u.id u_id,u.name,u.pass from t_mobile m,t_user u where m.userid = u.id and m.id = #{id}
</select>
</mapper>


ok完成了,运行结果如下:



源码下载:http://download.csdn.net/detail/jefry_xdz/5229050
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: