mybatis系列九:利用业务实体类和hashmap进行关联

    其实mybatis的关联是很灵活的,可以不用任何关联配置。这里介绍两种关联方式,可以针对于任何关联操作,不管是几对几。

方式一:利用业务实体类进行关联

sql配置

<!-- 用业务实体类进行关联 -->
	<select id="selectByJoinEntity" resultType="com.obtk.entitys.JoinEntity">
		SELECT s.stuId,s.stuName,s.gender,s.age,d.departName
		FROM student s LEFT JOIN department d
		ON s.deptIdd=d.deptId
</select>
业务实体类

package com.obtk.entitys;

import java.io.Serializable;
//业务实体
public class JoinEntity implements Serializable{
	private static final long serialVersionUID = 6498540528701698221L;
	private int stuId;
	private String stuName;
	private String gender;
	private int age;
	private String departName;
	
	public JoinEntity() {
	}

	public int getStuId() {
		return stuId;
	}

	public void setStuId(int stuId) {
		this.stuId = stuId;
	}

	public String getStuName() {
		return stuName;
	}

	public void setStuName(String stuName) {
		this.stuName = stuName;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getDepartName() {
		return departName;
	}

	public void setDepartName(String departName) {
		this.departName = departName;
	}
	
}
测试类

package com.obtk.test3;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.obtk.entitys.JoinEntity;
import com.obtk.utils.MybatisUtil;

public class TestJoinByEntity {
	public static void main(String[] args) {
		SqlSession session=null;
		try {
			//1.得到session
			session=MybatisUtil.getSession();
			//2.执行语句
			List<JoinEntity> stuList=session.selectList("stu.selectByJoinEntity");
			for(JoinEntity stu : stuList){
				System.out.println(stu.getStuId()+","+stu.getStuName()+","+stu.getGender()
						+","+stu.getAge()+","+stu.getDepartName());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			MybatisUtil.closeSession();
		}
	}
}
运行结果

DEBUG - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@1d3cdaa]
DEBUG - ==>  Preparing: SELECT s.stuId,s.stuName,s.gender,s.age,d.departName FROM student s LEFT JOIN department d ON s.deptIdd=d.deptId 
DEBUG - ==> Parameters: 
100,王燕,女,18,计算机系
101,张栋,男,21,计算机系
102,李波,男,21,艺术系
103,陈建,男,19,艺术系
104,王江洪,男,25,经管系
105,潘将,男,24,工程系
106,张斌,男,22,土木系
107,张斌,女,20,计算机系
108,刘大海,男,28,计算机系
109,刘德华,男,31,计算机系
110,周润发,男,41,艺术系
111,张学友,男,37,艺术系
112,周星驰,男,42,经管系
113,刘亦菲,女,24,工程系
114,胡歌,男,32,土木系
115,范冰冰,女,20,计算机系
116,杨幂,女,26,土木系
117,刘涛,女,27,工程系
118,周迅,女,21,工程系
119,古力娜扎,女,19,计算机系
120,黑山老妖,妖,99,null
DEBUG - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@1d3cdaa]
DEBUG - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@1d3cdaa]
DEBUG - Returned connection 30657962 to pool.

方式二:利用hashmap进行关联
sql配置

<!-- 万能关联 -->
	<select id="selectByQnn" parameterType="map" resultType="hashmap">
		select * from student s inner join department d
		on s.deptIdd=d.deptId
		where s.gender=#{sex}
		and d.departName=#{deptName}
	</select>
关键在于resultType="hashmap"     意思是查出来的每一行数据都映射成一个hashmap对象。

代码:

package com.obtk.test3;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;

import com.obtk.entitys.StudentEntity;
import com.obtk.utils.MybatisUtil;

public class TestJoinQnn {
	public static void main(String[] args) {
		SqlSession session=null;
		try {
			//4.得到session
			session=MybatisUtil.getSession();
			Map paramMap=new HashMap();
			paramMap.put("sex", "男");
			paramMap.put("deptName", "计算机系");
			//5.执行语句
			List<HashMap> stuList=session.selectList("stu.selectByQnn",paramMap);
			for(HashMap theObj : stuList){
				System.out.println(theObj.get("stuId")+","+theObj.get("gender")
						+","+theObj.get("stuName")+","+theObj.get("departName"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			MybatisUtil.closeSession();
		}
	}
}
运行结果:

DEBUG - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@1f2cea2]
DEBUG - ==>  Preparing: select * from student s inner join department d on s.deptIdd=d.deptId where s.gender=? and d.departName=? 
DEBUG - ==> Parameters: 男(String), 计算机系(String)
101,男,张栋,计算机系
108,男,刘大海,计算机系
109,男,刘德华,计算机系
DEBUG - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@1f2cea2]
DEBUG - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@1f2cea2]
DEBUG - Returned connection 32689826 to pool.






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御前两把刀刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值