技术帮
 

多表关联一对多查询

本网站内容基本都是原创作品,未得到作者同意也欢迎转载
转载请注明出处:技术帮
说你呢,赶紧长按二维码,然后点击识别图中二维码

任何技术难题可进QQ群提问:【小崔说编程
对于提问的原则是:没有你不能问的,只有我不会答的

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

用户表

blob.png

移动手机号表

blob.png

在Java实体对象对中,一对多可以根据List和Set来实现,两者在mybitis中都是通过collection标签来配合使用。


MobileBean:

package com.jiisb.app.pojo;

public class Mobile {
	
	private Integer noid;
	
	private String phoneNumb;

	public Integer getNoid() {
		return noid;
	}

	public void setNoid(Integer noid) {
		this.noid = noid;
	}

	public String getPhoneNumb() {
		return phoneNumb;
	}

	public void setPhoneNumb(String phoneNumb) {
		this.phoneNumb = phoneNumb;
	}
	
	

}


UserBean:

package com.jiisb.app.pojo;

import java.util.List;

public class User {
	
	private Integer noid;
	
	private String username;
	
	private List<Mobile> mobiles;

	public List<Mobile> getMobiles() {
		return mobiles;
	}

	public void setMobiles(List<Mobile> mobiles) {
		this.mobiles = mobiles;
	}

	public Integer getNoid() {
		return noid;
	}

	public void setNoid(Integer noid) {
		this.noid = noid;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}
	
	

}


映射文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jiisb.app.mapper.UserMapper">

    <!-- 自定义返回结果集 -->
    <resultMap id="userMap" type="com.jiisb.app.pojo.User">
        <id property="noid" column="noid" javaType="java.lang.Integer"></id>
        <result property="username" column="username" javaType="java.lang.String"></result>
    	<collection property="mobiles" ofType="com.jiisb.app.pojo.Mobile">
    		<id property="noid" column="mid" javaType="java.lang.Integer"></id>
        	<result property="phoneNumb" column="phone_numb" javaType="java.lang.String"></result>
    	</collection>
    </resultMap>
    	
	<select id="getById" resultMap="userMap">
		select u.*,m.noid mid,m.phone_numb from t_user u left join t_mobile m on u.noid=m.user_id
		  where u.noid=#{noid}
	</select>
	
 
</mapper>


测试代码:

public class Test {  
  
    public static void main(String[] args){  
        SqlSession s = BaseDao.openSession();
		try{
			UserMapper dm = s.getMapper(UserMapper.class);
	
			User u=dm.getById(1);
			System.out.println(u.getMobiles().get(0).getPhoneNumb());
		}finally{
			s.close();
		}
    }  
  
}