`

Mybatis 入门之resultMap与resultType讲解实例

 
阅读更多
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中的分布查询、`resultType`与`resultMap`的用法,并分享新手学习MyBatis时可能会遇到的问题及解决方法。 1. **分布查询**: 在MyBatis中,分布查询通常通过`&lt;select&gt;`标签实现,可以...

    MyBatis中关于resultType和resultMap的区别介绍

    在MyBatis中,`resultType` 和 `resultMap` 是两种不同的方式,用于处理SQL查询结果到Java对象的映射。理解它们的区别对于优化MyBatis映射文件的编写和提升代码的可维护性至关重要。 1. **resultType**: - `...

    mybatis入门示例项目

    1. 数据库SQL语句:MyBatis的核心功能之一就是将Java对象与数据库中的SQL语句进行映射。在项目中,通常会创建一个`resources`目录下的`sqlmap`文件夹,其中包含`.xml`格式的映射文件,如`UserMapper.xml`。这些文件...

    mybatis入门实例(xml)

    在这个"mybatis入门实例(xml)"中,我们将探讨如何使用 MyBatis 的 XML 配置文件进行数据库操作。 首先,MyBatis 的核心是 SQL 映射文件,它位于项目的 resources 目录下,通常命名为 `mybatis-config.xml`。这个...

    Mybatis中的resultType和resultMap查询操作实例详解

    在MyBatis中,`resultType` 和 `resultMap` 是两种不同的结果集映射方式,它们用于将数据库查询的结果转换为Java对象。在处理查询返回的数据时,这两个概念是至关重要的。 `resultType` 是一种简单的方式,它直接...

    第一个mybatis程序 mybatis入门

    【标题】"第一个mybatis程序 mybatis入门" 涉及到的是MyBatis框架的基础使用,这是一个轻量级的Java持久层框架,它简化了与数据库交互的过程,提供了强大的映射功能。以下是对MyBatis入门的详细解析: 1. **MyBatis...

    深入理解Mybatis中的resultType和resultMap

    在MyBatis中,resultType和resultMap是两种不同的方式,用于处理SQL查询结果到Java对象...在MyBatis中,合理使用resultType和resultMap可以提高代码的可读性和可维护性,使得数据库查询与对象模型之间的转换更加高效。

    Mybatis 入门小例子

    以上就是Mybatis入门的基本内容,通过这个小例子,你可以理解Mybatis如何与数据库交互,如何定义和执行SQL,以及如何处理结果映射和事务管理。随着对Mybatis更深入的学习,你会发现它在实际项目中有着广泛的应用,能...

    mybatis入门实例

    结果映射通过`resultType`或`resultMap`标签实现,将数据库查询结果自动映射到Java对象。 8. **事务管理**:MyBatis支持手动和自动两种事务管理方式。在手动模式下,你需要在SqlSession的beginTransaction(), ...

    mybatis入门教程(二)

    ### MyBatis 入门教程(二):高级映射、查询缓存及Spring整合 #### MyBatis 概述 MyBatis 是一个优秀的持久层框架,它支持自定义 SQL 查询语句,并能很好地与 Java 的 POJOs 对象(Plain Old Java Objects)互相...

    MyBatis3 用户指南 附JavaDB实例 pdf

    - **SqlSessionFactory实例**:MyBatis应用的核心,用于创建SqlSession对象。 - **创建SqlSessionFactory**: - **从XML中创建**:通过`SqlSessionFactoryBuilder`解析配置文件构建。 - 示例:`SqlSessionFactory ...

    电子书-深入浅出Mybatis技术原理与实战

    7. **参数处理与结果映射**:深入研究参数对象的传递,包括#{}与${}的区别,以及自动映射、ResultMap、ResultType等结果处理机制。 8. **动态SQL**:介绍Mybatis的动态SQL功能,如if、choose、when、otherwise、...

    Mybatis实例

    - **Mapper接口**:Java接口,对应XML中的SQL语句,方法名与XML中的id相同,返回值类型与resultType或resultMap匹配。 - **SqlSession对象**:执行SQL并获取结果的入口,通过SqlSessionFactory创建。 - **...

    MyBatis(1)--MyBatis入门示例

    在本入门示例中,我们将了解MyBatis的基本使用流程,包括环境搭建、配置文件解析、Mapper接口定义、SQL映射文件编写、数据访问对象(DAO)实现及事务管理等关键环节。 1. **环境搭建**:首先,你需要在项目中引入...

    MyBatis入门

    ### MyBatis入门知识点详解 #### 一、基础概念 **1. Model(实体类)** - **定义**:在Java中通常被称为Entity或POJO(Plain Old Java Object),这些类主要用于封装业务数据。 - **作用**:实体类与数据库中的...

    mybatis 高级映射实例

    MyBatis是一个强大的Java持久层框架,它允许开发者将SQL语句与Java代码分离,提供了一种灵活的方式来处理数据库操作。在本高级映射实例中,我们将深入探讨如何使用XML方式编写Mapper文件,以及如何利用关联嵌套和...

    springmybatis

    mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in ...

    MyIbatis\MyBatis3_用户指南(附JavaDB实例)

    - **SqlSessionFactory**:这是MyBatis的核心工厂对象,用于创建`SqlSession`实例。可以通过`SqlSessionFactoryBuilder`来构建`SqlSessionFactory`实例。 - **SqlSession**:提供了一个执行SQL命令的环境,负责处理...

    MyBatis完整案例(增删改查)

    3. **Mapper接口与Mapper XML文件**:在MyBatis中,我们定义业务接口,然后在对应的XML文件中编写SQL语句。接口方法名和XML中的SQL ID对应,这样通过SqlSession的selectOne、selectList、insert、update和delete方法...

    mybatis-3.5.9.zip

    例如,`Mapper.xml`文件包含了具体的增删查改操作的SQL语句,通过id、resultType或resultMap等元素来定义。 4. **注解方式**:除了XML映射文件,MyBatis还支持在Mapper接口上使用注解,如`@Select`、`@Insert`、`@...

Global site tag (gtag.js) - Google Analytics