mybatis select 结果集是 map 写法

<select id="selectPerson" parameterType="int" resultType="hashmap">
  SELECT * FROM PERSON WHERE ID = #{id}
</select>

这个语句被称做 selectPerson,接受一个 int(或 Integer)类型的参数,并返回一个 HashMap 类型的对象,其中的键是列名,值即是结果行中的对应值。html

若是是简单的 返回,就能够不用写 结果集 resultMap 对象了。sql

更多使用参考mybatis 中文文档;mybatis

http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.htmlapp

或者是 :this

<select id="selectUsers" resultType="map">
  select id, username, hashedPassword
  from some_table
  where id = #{id}
</select>

 

这样一个语句简单做用于全部列被自动映射到 HashMap 的键上,这由 resultType 属性 指定。这在不少状况下是有用的,可是 HashMap 不能很好描述一个领域模型。那样你的应 用程序将会使用 JavaBeans 或 POJOs(Plain Old Java Objects,普通 Java 对象)来做为领域 模型。MyBatis 对二者都支持。看看下面这个 JavaBean:xml

 

package com.someapp.model;
public class User {
  private int id;
  private String username;
  private String hashedPassword;
  
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getUsername() {
    return username;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public String getHashedPassword() {
    return hashedPassword;
  }
  public void setHashedPassword(String hashedPassword) {
    this.hashedPassword = hashedPassword;
  }
}

 

基于 JavaBean 的规范,上面这个类有 3 个属性:id,username 和 hashedPassword。这些 在 select 语句中会精确匹配到列名。htm

这样的一个 JavaBean 能够被映射到结果集,就像映射到 HashMap 同样简单。对象

<select id="selectUsers" resultType="com.someapp.model.User">
  select id, username, hashedPassword
  from some_table
  where id = #{id}
</select>

 

这样就不须要些resultMap 了。文档

这些状况下,MyBatis 会在幕后自动建立一个 ResultMap,基于属性名来映射列到 JavaBean 的属性上。若是列名没有精确匹配,你能够在列名上使用 select 字句的别名(一个 基本的 SQL 特性)来匹配标签。好比:get

<select id="selectUsers" resultType="User">
  select
    user_id             as "id",
    user_name           as "userName",
    hashed_password     as "hashedPassword"
  from some_table
  where id = #{id}
</select>
相关文章
相关标签/搜索