技术帮
 

级联方式一对多查询

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

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

上篇文章介绍了一对多的查询,查询的时候需要通过多表关联查询的SQL语句实现,本篇文件介绍以级联查询方式实现一对多查询。

用户表

blob.png

移动手机号表

blob.png


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;
	}
	
	

}

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;
	}
	
	

}

UserMapper.xml映射文件:

<?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" column="noid" 
    	select="com.jiisb.app.mapper.MobileMapper.lstByUserId">
    	</collection>
    </resultMap>
	
	<select id="getById" resultMap="userMap">
		select u.* from t_user u where u.noid=#{noid}
	</select>
</mapper>

1472995996528030644.png注意:在这个配置文件中,select查询语句只对user表进行查询,collection中配置了mobile表的lstByUserId的方法。


MobileMapper.xml映射文件:

<?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.MobileMapper">
    <!-- 自定义返回结果集 -->
    <resultMap id="mobileMap" type="com.jiisb.app.pojo.Mobile">
        <id property="noid" column="noid" javaType="java.lang.Integer"></id>
        <result property="phoneNumb" column="phone_numb" javaType="java.lang.String"></result>
    </resultMap>

	<select id="getById" resultMap="mobileMap">
		select * from t_mobile where noid=#{noid}
	</select>
	
	<select id="lstByUserId"  resultMap="mobileMap">
		select * from t_mobile where user_id=#{uid}
	</select>
</mapper>


测试代码:

		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();
		}