Mybatis 入门之resultMap与resultType讲解实例

resultMap:适合使用返回值是自定义实体类的情况

resultType:适合使用返回值得数据类型是非自定义的,即jdk的提供的类型

resultMap :

type:映射实体类的数据类型

id:resultMap的唯一标识

column:库表的字段名

property:实体类里的属性名

配置映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:当前库表映射文件的命名空间,唯一的不能重复 -->
<mapper namespace="com.hao947.sql.mapper.PersonMapper">
	<!-- type:映射实体类的数据类型 id:resultMap的唯一标识 -->
	<resultMap type="person" id="BaseResultMap">
		<!-- column:库表的字段名 property:实体类里的属性名 -->
		<id column="person_id" property="personId" />
		<result column="name" property="name" />
		<result column="gender" property="gender" />
		<result column="person_addr" property="personAddr" />
		<result column="birthday" property="birthday" />
	</resultMap>
	<!--id:当前sql的唯一标识
		 parameterType:输入参数的数据类型
		 resultType:返回值的数据类型
		 #{}:用来接受参数的,如果是传递一个参数#{id}内容任意,如果是多个参数就有一定的规则,采用的是预编译的形式select
		* from person p where p.id = ? ,安全性很高 -->

	<!-- sql语句返回值类型使用resultMap -->
	<select id="selectPersonById" parameterType="java.lang.Integer"
		resultMap="BaseResultMap">
		select * from person p where p.person_id = #{id}
	</select>
	<!-- resultMap:适合使用返回值是自定义实体类的情况
	resultType:适合使用返回值的数据类型是非自定义的,即jdk的提供的类型 -->
	<select id="selectPersonCount" resultType="java.lang.Integer">
		select count(*) from
		person
	</select>

	<select id="selectPersonByIdWithMap" parameterType="java.lang.Integer"
		resultType="java.util.Map">
		select * from person p where p.person_id= #{id}
		</select>

</mapper>

实体类Person.java

<pre name="code" class="java">package com.hao947.model;
import java.util.Date;
public class Person {
	private Integer personId;
	private String name;
	private Integer gender;
	private String personAddr;
	private Date birthday;
	@Override
	public String toString() {
		return "Person [personId=" + personId + ", name=" + name + ", gender="
				+ gender + ", personAddr=" + personAddr + ", birthday="
				+ birthday + "]";
	}
}

测试类

public class PersonTest {
	SqlSessionFactory sqlSessionFactory;
	@Before
	public void setUp() throws Exception {
		// 读取资源流
		InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
		// 初始化session工厂
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
	}

	@Test
	public void selectPersonById() {
		// 创建一个sqlsession
		SqlSession session = sqlSessionFactory.openSession();
		try {
			Person p = session.selectOne(
					"com.hao947.sql.mapper.PersonMapper.selectPersonById", 1);
			System.out.println(p);
		} finally {
			session.close();
		}
	}
	@Test
	public void selectPersonCount() {
		// 创建一个sqlsession
		SqlSession session = sqlSessionFactory.openSession();
		try {
			Integer p = session.selectOne(
					"com.hao947.sql.mapper.PersonMapper.selectPersonCount");
			System.out.println(p);
		} finally {
			session.close();
		}
	}
	@Test
	public void selectPersonByIdWithMap() {
		// 创建一个sqlsession
		SqlSession session = sqlSessionFactory.openSession();
		try {
			Map<String ,Object> map = session.selectOne(
					"com.hao947.sql.mapper.PersonMapper.selectPersonByIdWithMap",1);
			System.out.println(map);
		} finally {
			session.close();
		}
	}
}

Mybatis 入门之resultMap与resultType讲解实例

时间: 2024-10-18 15:22:21

Mybatis 入门之resultMap与resultType讲解实例的相关文章

mybatis 中的resultMap 和resultType

Mapper.xml文件里的select语句里的返回类型 可以为resultMap和resultType 两者的区别: resultType 返回单个pojo对象要保证sql查询出来的结果集为单条,内部使用session.selectOne方法调用,mapper接口使用pojo对象作为方法返回值. 返回pojo列表表示查询出来的结果集可能为多条,内部使用session.selectList方法,mapper接口使用List<pojo>对象作为方法返回值. 数据库的字段名必须和实体类的属性名称一

Mybatis入门实例

第一步:创建项目导入jar包 第二步:建表: CREATE TABLE `person` ( `ID` int(10) NOT NULL AUTO_INCREMENT, `NAME` varchar(10) DEFAULT NULL, `GENDER` int(10) DEFAULT NULL, `ADRESS` varchar(50) DEFAULT NULL, `BIRTHDAY` date DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB A

Mybatis入门(三)——实例(一)

Mybatis入门(三) 数据库 public class Student { private String sno; public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getsName() { return sName; } public void setsName(String sName) { this.sName = sName;

【Mybatis框架】输出映射-resultType与resultMap

输出映射接下来说说有关Mapper.xml配置文件中查询标签中关于返回值类型resultType与resultMap的一些内容 1.resultType使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功.如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象.只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象. 1.1输出简单类型1.1.1需求用户信息的综合查询列表总数,通过查询总数和上边用户综合查询列表才可以实

mybatis中resultMap与resultType的使用说明

一.mapper文件内容如下: <mapper namespace="com.miapsoft.dao.UserDao"> <resultMap type="User" id="UserMapper"> <result property="id" column="ID" /> <result property="name" column=&quo

Mybatis ResultMap 和 resultType 区别

一.概述MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在.在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值.①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resu

Mybatis实现一对一查询 对ResultType和ResultMap分析

实现一对一查询: ResultMap:使用ResultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加 列名对应的属性,即可完成映射. 如果没有查询结果的特殊要求建议使用ResultMap. ResultMap:需要单独定义ResultMap,实现有点麻烦,如果对查询结果又特殊要求,使用ResultMap 可以完成将关联查询映射pojo的属性中. (ResultMap可以实现延迟加载,而ResultMap无法实现延迟加载) 原文地址:https://www.cnblogs.c

框架 day65 Mybatis入门(基础知识:框架原理,入门[curd],开发dao层,全局与映射配置)

Mybatis 基础知识(一) 第一天:基础知识(重点) mybatis介绍 mybatis框架原理(掌握) mybaits入门程序(掌握) 用户信息进行增.删.改.查 mybatis开发dao层方法:(掌握) 原始dao开发方法(dao接口和实现类需要程序员编写) mapper代理开发方法(程序员只需要编写接口) SqlMapConfig.xml(mybatis全局配置文件)(掌握) mybatis输入映射(掌握) mybatis输出映射(掌握) mybatis动态sql(掌握)   1   

Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门

本章将涵盖以下话题: ž  MyBatis是什么? ž  为什么选择MyBatis? ž  MyBatis安装配置 ž  域模型样例 1.1 MyBatis是什么 MyBatis是一个简化和实现了Java数据持久化层(persistencelayer)的开源框架,它抽象了大量的JDBC冗余代码,并提供了一个简单易用的API和数据库交互. MyBatis的前身是iBATIS,iBATIS于2002年由ClintonBegin创建.MyBatis 3 是iBATIS的全新设计,支持注解和Mapper