技术帮
 

多表关联多对一查询

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

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

多表映射的关键要用到mybitis的association来加以实现。


用户表

blob.png

移动手机号表

blob.png


UserBean:

package com.jiisb;  
  
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;  
    }  
}


MobileBean:

package com.jiisb;  
  
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;  
    }  
  
}


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

	<select id="getById" resultMap="mobileMap">
		select m.*,u.username from t_mobile m left join t_user u on m.user_id=u.noid
		 where m.noid=#{noid}
	</select>
	
</mapper>


测试代码:

                SqlSession s = BaseDao.openSession();
		try{
			MobileMapper dm = s.getMapper(MobileMapper.class);
	
			Mobile m = dm.getById(1);
			System.out.println(m.getUser().getUsername());
		}finally{
			s.close();
		}