业务实体类和hashmap进行关联"/>
mybatis系列九:利用业务实体类和hashmap进行关联
其实mybatis的关联是很灵活的,可以不用任何关联配置。这里介绍两种关联方式,可以针对于任何关联操作,不管是几对几。
方式一:利用业务实体类进行关联
sql配置
<!-- 用业务实体类进行关联 --><select id="selectByJoinEntity" resultType="com.obtk.entitys.JoinEntity">SELECT s.stuId,s.stuName,s.gender,s.age,d.departNameFROM student s LEFT JOIN department dON 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.得到sessionsession=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 don s.deptIdd=d.deptIdwhere 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.得到sessionsession=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.
更多推荐
mybatis系列九:利用业务实体类和hashmap进行关联
发布评论