输出参数resultType,resultMap

一.输出参数resultType

1. 简单类型(8个基本+String)

	<select id="queryResultOfInt" resultType="int">
		select count(*) from student
	</select>

2. 输出参数为实体对象类型

	<select id="queryAllstudent" resultType="com.ph.main.dao.Student">
		select * from student
	</select>
	
	<select id="queryStudenByIdtWithConverter" resultType="student" parameterType="int">
		select * from student where stunum=#{stuNum}
	</select>

3. 输出参数为实体对象类型的集合 :

虽然输出类型为集合,但是resultType依然写 集合的元素类型(如:resultType=“Student”)

<!--输出可能为多个student,即student类型的集合,但还是写成student-->
	<select id="queryStudentBystuAgeOrStuName" parameterType="student" resultType="student">
		select stunum,stuname,stuage from student where stunum=#{stuNum} or stuname like '%${stuName}%'
	</select>

4. 输出参数类型为HashMap

—HashMap本身是一个集合,可以存放多个元素,
但是根据提示发现 返回值为HashMap时 ,查询的结果只能是1个学生(no,name);因为HashMap的键(key)不能重复。
–>结论:一个HashMap 对应一个学生的多个元素(多个属性) 【一个map,一个学生】

<!-- 输出参数为HashMap时,通过SQL语句中 参数的别名 确定map的key值,
		数据存在key对应的value值里面 
		HashMap的键(key)不能重复-->
	<select id="queryStudentout1" resultType="HashMap" parameterType="int">
		select stunum "num",stuname "name" from student  where stunum=#{stuNum}
	</select>

测试类

StudentMapper studentMapper=session.getMapper(StudentMapper.class);
HashMap<String, Object> hashMap=studentMapper.queryStudentout1(1);
System.out.println(hashMap);
session.close()

resultType为多个HashMap时:
Mapper.xml中

	<select id="queryAllStudentout" resultType="HashMap">
		select stunum "num",stuname "name" from student 
	</select>

映射文件对应的接口中

	List<HashMap<String, Object>> queryAllStudentout();

测试类中

	public static void queryAllStudentout() throws IOException {
		Reader reader=Resources.getResourceAsReader("conf.xml");
		SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
		SqlSession session=sessionFactory.openSession();
		
		StudentMapper studentMapper=session.getMapper(StudentMapper.class);
		List<HashMap<String, Object>> studentList=studentMapper.queryAllStudentout();
		System.out.println(studentList);
		session.close();
	}

二.输出参数resultMap

使用resultMap的情况:
实体类的属性、数据表的字段: 类型、名字不同时(stuno,id)。

注意:当属性名 和字段名 不一致时,除了使用resultMap以外,还可以使用resultType+HashMap。

使用resultMap:
在这里插入图片描述

使用resultType+HashMap:
(sql)select 表的字段名 “类的属性名” from… 来指定字段名 和属性名的对应关系

	<select id="XXXXXX" resultType="student" parameterType="int">
		select id "stuNo" ,name "stuName" from student where id=#{xx}
	</select>

注意: 如果10个字段,但发现 某一个字段结果始终为默认值(0,0.0,null),则可能是 表的字段 和 类的属性名字写错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值