Mybatis 入门之resultMap与resultType讲解实例
时间 2014-06-26 00:49:44 CSDN博客
原文 http://blog.csdn.net/hao947_hao947/article/details/34594695
主题 MyBatis
resultMap:适合使用返回值是自定义实体类的情况
resultType:适合使用返回值得数据类型是非自定义的,即jdk的提供的类型
resultMap :
映射实体类的数据类型
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中的分布查询、`resultType`与`resultMap`的用法,并分享新手学习MyBatis时可能会遇到的问题及解决方法。 1. **分布查询**: 在MyBatis中,分布查询通常通过`<select>`标签实现,可以...
在MyBatis中,`resultType` 和 `resultMap` 是两种不同的方式,用于处理SQL查询结果到Java对象的映射。理解它们的区别对于优化MyBatis映射文件的编写和提升代码的可维护性至关重要。 1. **resultType**: - `...
1. 数据库SQL语句:MyBatis的核心功能之一就是将Java对象与数据库中的SQL语句进行映射。在项目中,通常会创建一个`resources`目录下的`sqlmap`文件夹,其中包含`.xml`格式的映射文件,如`UserMapper.xml`。这些文件...
在这个"mybatis入门实例(xml)"中,我们将探讨如何使用 MyBatis 的 XML 配置文件进行数据库操作。 首先,MyBatis 的核心是 SQL 映射文件,它位于项目的 resources 目录下,通常命名为 `mybatis-config.xml`。这个...
在MyBatis中,`resultType` 和 `resultMap` 是两种不同的结果集映射方式,它们用于将数据库查询的结果转换为Java对象。在处理查询返回的数据时,这两个概念是至关重要的。 `resultType` 是一种简单的方式,它直接...
【标题】"第一个mybatis程序 mybatis入门" 涉及到的是MyBatis框架的基础使用,这是一个轻量级的Java持久层框架,它简化了与数据库交互的过程,提供了强大的映射功能。以下是对MyBatis入门的详细解析: 1. **MyBatis...
在MyBatis中,resultType和resultMap是两种不同的方式,用于处理SQL查询结果到Java对象...在MyBatis中,合理使用resultType和resultMap可以提高代码的可读性和可维护性,使得数据库查询与对象模型之间的转换更加高效。
以上就是Mybatis入门的基本内容,通过这个小例子,你可以理解Mybatis如何与数据库交互,如何定义和执行SQL,以及如何处理结果映射和事务管理。随着对Mybatis更深入的学习,你会发现它在实际项目中有着广泛的应用,能...
结果映射通过`resultType`或`resultMap`标签实现,将数据库查询结果自动映射到Java对象。 8. **事务管理**:MyBatis支持手动和自动两种事务管理方式。在手动模式下,你需要在SqlSession的beginTransaction(), ...
### MyBatis 入门教程(二):高级映射、查询缓存及Spring整合 #### MyBatis 概述 MyBatis 是一个优秀的持久层框架,它支持自定义 SQL 查询语句,并能很好地与 Java 的 POJOs 对象(Plain Old Java Objects)互相...
- **SqlSessionFactory实例**:MyBatis应用的核心,用于创建SqlSession对象。 - **创建SqlSessionFactory**: - **从XML中创建**:通过`SqlSessionFactoryBuilder`解析配置文件构建。 - 示例:`SqlSessionFactory ...
7. **参数处理与结果映射**:深入研究参数对象的传递,包括#{}与${}的区别,以及自动映射、ResultMap、ResultType等结果处理机制。 8. **动态SQL**:介绍Mybatis的动态SQL功能,如if、choose、when、otherwise、...
- **Mapper接口**:Java接口,对应XML中的SQL语句,方法名与XML中的id相同,返回值类型与resultType或resultMap匹配。 - **SqlSession对象**:执行SQL并获取结果的入口,通过SqlSessionFactory创建。 - **...
在本入门示例中,我们将了解MyBatis的基本使用流程,包括环境搭建、配置文件解析、Mapper接口定义、SQL映射文件编写、数据访问对象(DAO)实现及事务管理等关键环节。 1. **环境搭建**:首先,你需要在项目中引入...
### MyBatis入门知识点详解 #### 一、基础概念 **1. Model(实体类)** - **定义**:在Java中通常被称为Entity或POJO(Plain Old Java Object),这些类主要用于封装业务数据。 - **作用**:实体类与数据库中的...
MyBatis是一个强大的Java持久层框架,它允许开发者将SQL语句与Java代码分离,提供了一种灵活的方式来处理数据库操作。在本高级映射实例中,我们将深入探讨如何使用XML方式编写Mapper文件,以及如何利用关联嵌套和...
mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in ...
- **SqlSessionFactory**:这是MyBatis的核心工厂对象,用于创建`SqlSession`实例。可以通过`SqlSessionFactoryBuilder`来构建`SqlSessionFactory`实例。 - **SqlSession**:提供了一个执行SQL命令的环境,负责处理...
3. **Mapper接口与Mapper XML文件**:在MyBatis中,我们定义业务接口,然后在对应的XML文件中编写SQL语句。接口方法名和XML中的SQL ID对应,这样通过SqlSession的selectOne、selectList、insert、update和delete方法...
例如,`Mapper.xml`文件包含了具体的增删查改操作的SQL语句,通过id、resultType或resultMap等元素来定义。 4. **注解方式**:除了XML映射文件,MyBatis还支持在Mapper接口上使用注解,如`@Select`、`@Insert`、`@...