mybatis-puls中的resultMap数据映射

目录
  • mybatis-puls resultMap数据映射
    • resultType
    • resultMap
    • Mapper中基本查询语句
    • resultMap中字段映射
  • Mybatis ResultMap结果集映射
    • POJO
    • 数据库字段
    • ResultType
    • ResultMap

mybatis-puls resultMap数据映射

resultType

resultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致。

如果sql查询到的字段与pojo的属性名不一致,则需要使用resultMap将字段名和属性名对应起来,进行手动配置封装,将结果映射到pojo中!

resultMap

resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。

  • 数据库字段:user_id,
  • 实体类字段:userId
  • 需要手动配置设置resultMap

Mapper中基本查询语句

<!-- 查询所有的订单数据 -->
    <!-- resultMap:填入配置的resultMap标签的id值 -->
    <select id="queryOrderAll" resultMap="orderResultMap">
        SELECT id, user_id,
        number,
        createtime, note FROM `order`
    </select>

resultMap中字段映射

<!-- resultMap最终还是要将结果映射到pojo上,type就是指定映射到哪一个pojo -->
    <!-- id:设置ResultMap的id -->
    <resultMap type="order" id="orderResultMap">
        <!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->
        <!-- property:主键在pojo中的属性名 -->
        <!-- column:主键在数据库中的列名 -->
        <id property="id" column="id" />

        <!-- 定义普通属性 -->
        <result property="userId" column="user_id" />
        <result property="number" column="number" />
        <result property="createtime" column="createtime" />
        <result property="note" column="note" />
    </resultMap>

Mybatis ResultMap结果集映射

当我们的POJO中的字段与数据库中的字段不一致时,在利用resultType进行结果集映射时,不一致的字段将会被赋值为null,这时我们可以利用ResultMap映射进行赋值

POJO

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private String password;
}

数据库字段

ResultType

<select id="getUserList" resultType="User">
    select * from user;
</select>

可以出数据库中是pwd,而pojo中是password,这样利用resultType是无法映射的,password查出来的结果为null

ResultMap

<select id="getUserList" resultMap="UserMap">
    select * from user;
</select>
<resultMap id="UserMap" type="User">
    <result column="id" property="id"/>
    <result column="name" property="name"/>
    <result column="pwd" property="password"/>
</resultMap>

我们用resultMap替换resultType

UserMap与下面resultMap里的id属性的值保持一致即可

type为返回值类型,这里我之所以是User是因为我起了别名,如果没有起别名要写出完整的路径

在resultMap中,column代表数据库中的列,也就是数据库里的字段,property为数据库中的字段映射的结果,这里我们与pojo保持一致即可,数据库中的pwd被映射为password,pojo里的password也就能赋值成功了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Mybatis中resultMap的使用总结

    Mybatis的介绍以及使用:http://www.mybatis.org/mybatis-3/zh/index.html resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中. resultMap包含的元素: <!--column不做限制,可以为任意表的字段,而property须为type 定义的pojo属性--> <resultMap id="唯一的标识" type="映射的pojo对象&

  • mybatis的mapper.xml中resultMap标签的使用详解

    1.前言 最近博主在做一个ssm框架的共享汽车管理系统,其中,数据库字段设计的有下划线方式,a_username,然后在写mapper.xml里面的sql语句的时候,一直出现查询语句查询的值为null的情况.或者是resultMap标签和驼峰规则不太明白的同学,可以看这里. 于是顺便梳理一下. 2.关于resultMap 2.1.什么是resultMap? 在mybatis中有一个resultMap标签,它是为了映射select查询出来结果的集合,其主要作用是将实体类中的字段与数据库表中的字段进

  • mybatis 如何利用resultMap复杂类型list映射

    mybatis resultMap复杂类型list映射 映射泛型为对象 xml <resultMap id="internetDataDTO" type="com.mdm.skr.mdm_common.dto.StrategyInternetDataDTO"> <id property="id" column="id" jdbcType="INTEGER"/> <result

  • mybatis中resultMap 标签的使用教程

    MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设置参数.结果集检索等jdbc繁杂的过程代码. MyBatis特点: 1.开源的优秀持久层框架 2.SQL语句与代码分离 3.面向配置的编程 4.良好支持复杂数据映射 5.动态SQL resultMap 标签: 用来描述如何从数据库结果集中来加载对象 (敲黑板!!)主管数据库的字段和实体类属性的匹配,

  • mybatis-puls中的resultMap数据映射

    目录 mybatis-puls resultMap数据映射 resultType resultMap Mapper中基本查询语句 resultMap中字段映射 Mybatis ResultMap结果集映射 POJO 数据库字段 ResultType ResultMap mybatis-puls resultMap数据映射 resultType resultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致. 如果sql查询到的字段与pojo的属性名

  • 详解Java的MyBatis框架中SQL语句映射部分的编写

    1.resultMap SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: <mappers> <mapper resource="com/liming/manager/data/mappers/UserMapper.xml" /> <mapper resource="com/liming/mana

  • Java的MyBatis框架中Mapper映射配置的使用及原理解析

    Mapper的内置方法 model层就是实体类,对应数据库的表.controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法,在struts2就是Action.Service层主要做逻辑判断,Dao层是数据访问层,与数据库进行对接.至于Mapper是mybtis框架的映射用到,mapper映射文件在dao层用. 下面是介绍一下Mapper的内置方法: 1.countByExample ===>根据条件查询数量 int countByExample(UserE

  • MyBatis中的resultMap简要概述

    Mybatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. Mybatis的功能架构分为三层(图片借用了百度百科): 1)       API接口层:提供给外部使用的接口API,开发人员通过这些本地API

  • Java的MyBatis框架中XML映射缓存的使用教程

    MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制.默认情况下是没有开启缓存的,要开启二级缓存,你需要在你的SQL映射文件中添加一行: <cache/> 字面上看就是这样.这个简单语句的效果如下: 1.映射语句文件中的所有select语句将会被缓存. 2.映射语句文件中的所有insert,update和delete语句会刷新缓存. 3.缓存会使用Least Recently Used(LRU,最近最少使用的)算法来收回. 4.根据时间表(比如 no Flush Inter

  • 整理Java的MyBatis框架中一些重要的功能及基本使用示例

    基本用法回顾: SQL语句存储在XML文件或Java 注解中.一个MaBatis映射的示例(其中用到了Java接口和MyBatis注解): package org.mybatis.example; public interface BlogMapper { @Select("select * from Blog where id = #{id}") Blog selectBlog(int id); } 执行的示例: BlogMapper mapper = session.getMapp

  • mybatis mapper互相引用resultMap启动出错的解决

    目录 mybatis mapper互相引用resultMap启动出错 问题 原因 解决方法 mybatis resultMap引发的吐血bug 简单的讲 以下是详细的 利用mybatis读取数据时,发生不可理解的事情 mybatis mapper互相引用resultMap启动出错 问题 Caused by: java.lang.IllegalArgumentException: Result Maps collection does not contain value for kulink.cv

  • 解析mybatis-plus中的resultMap简单使用

    不一致,那么用来接收查询出来的result对应的数据将会是Null,如果不使用resultMap,那么一般为了避免pojo对象对应的属性为Null,会采用SQL语句中的别名,将查询出的数据库中的字段as pojo对象属性,而且,resultMap支持延迟加载 但是为了避免sql语句看着 臃肿,所以就使用了resultMap   简单使用  1.    选定你要进行的resultMap映射的model,如下是我要进行映射的model,model=======>Category.java[进行res

  • Mybatis开发环境搭建实现数据的增删改查功能

    config.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 拿到数据库

  • mybatis xml中特殊字符处理及特殊符号

    下面给大家介绍mybatis xml 中特殊字符处理方法,具体内容如下所示:  1,CDATA区: 它的全称为character data,以"<![CDATA[ "开始,以" ]]>" 结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封不动地交给下游程序处理. 2,特殊字符 : xml 中表示:   <= 小于等于.    >= 大于等于 需加  这样的标记:     <![C

随机推荐