解析mybatis-plus中的resultMap简单使用
作者:笨蛋的生活 发布时间:2021-09-03 03:53:06
不一致,那么用来接收查询出来的result对应的数据将会是Null,如果不使用resultMap,那么一般为了避免pojo对象对应的属性为Null,会采用SQL语句中的别名,将查询出的数据库中的字段as pojo对象属性,而且,resultMap支持延迟加载
但是为了避免sql语句看着 臃肿,所以就使用了resultMap
简单使用
1. 选定你要进行的resultMap映射的model,如下是我要进行映射的model,model=======>Category.java【进行resultMap的pojo类】
package com.atguigu.gulimall.product.vo;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Category {
private Long catId;
private String name;
private Long parentCid;
private Integer catLevel;
private Integer status;
private Integer sort;
private String iconImage;
private String userName;
private String unit;
private Integer count;
private Integer isDelete;
}
注意
不要在你要映射成resultMap的pojo类上加lombok的@Accessors(chain=true)的链式编程的注解,因为resultMap中的属性会报红【但是仍可使用】,如下图这样
2. 在mapper.xml中编写resultMap,并在要使用的sql查询语句里,指定result标签为resultMap和其名称
<?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">
<mapper namespace="com.atguigu.gulimall.product.dao.CategoryDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.atguigu.gulimall.product.vo.Category" id="categoryMap">
<result property="catId" column="cat_id"/>
<result property="name" column="name"/>
<result property="parentCid" column="parent_cid"/>
<result property="catLevel" column="cat_level"/>
<result property="status" column="show_status"/>
<result property="sort" column="sort"/>
<result property="iconImage" column="icon"/>
<result property="count" column="product_count"/>
</resultMap>
<!--直接在sql查询返回的结果里指定resultMap-->
<select id="queryByCid" parameterType="int" resultMap="categoryMap">
select * from pms_category where cat_id = #{cId}
</select>
</mapper>
resultMap中各标签代表含义
type: resultMap最终映射的java对象,可以使用别名【如果使用resultMap实际返回的对象类型】
id: resultMap的唯一标识【随便起】
result: 对普通名映射定义
property: type指定的返回的pojo对象中的属性名 写category里的属性名
column: 数据库中要查询出的字段【列名】 写要映射的数据库表里的字段名
property对应column形成数据库中字段和pojo属性对应关系
注意
如果此时resultMap在另外一个nameSpace里边,即其他的mapper文件里,那么在跨mapper使用时resultMap注明命名空间
3. 测试,直接运行项目
如果在数据库里查询的字段个数少于或多于resultMap,那么依然能够映射成功,就映射对应的字段,因为名称映射不上或者pojo里没有的字段对应的属性,那么直接在返回的pojo 对象里返回null和没有该字段
来源:https://blog.csdn.net/dsl59741/article/details/107940436


猜你喜欢
- 本文实例讲述了java使用Jdom实现xml文件写入操作的方法。分享给大家供大家参考,具体如下:package com.yanek.demo
- 在Android中,使用摄像头拍照一般有两种方法, 一种是调用系统自带的Camera,另一种是自己写一个摄像的界面。
- 本文实例为大家分享了Android自定义View实现拖动自动吸边的具体代码,供大家参考,具体内容如下自定义View,一是为了满足设计需求,二
- 问题来源一般来说,一个稍微大些的项目都会有一些依赖的Jar包,而在将项目部署到服务器的过程中,如果没有持续集成环境的话,也就是说服务器不支持
- 上篇博文:Java-多线程的使用equals与==1. ==的使用1.1 概述⭕ 用于基本类型比较值时:只要两个变量的值相等,即为true。
- Android Notification的多种用法总结我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏
- 参数和返回值得加密目的为了保证接口不被人拦截下来恶意请求,保证程序的稳定性,我们可以使用接口加密的方法来保证参数和返回值的保密性。具体实现方
- 分享一个在项目中用的到文件上传下载和对图片的压缩,直接从项目中扒出来的:)package com.eabax.plugin.yundada.
- 实践过程效果代码public partial class FrmGetColor : Form{ public F
- 使用Castle.Core.dll实现,核心代码是使用Castle.DynamicProxy.ProxyGenerator类的CreateI
- 一、Struts2文件上传 Struts2的文件上传实现非常简单,只需要简单几步就可完成;注意:(1)文件上传的struts2标签
- 在使用他人代码时,为不保留文件头部版权信息,需要一个个删掉,费时费力,写了个脚本,简单清除掉目录下所有的文件的头部版权信息。# -*- co
- 1. 并行和并发有什么区别?并行:多个处理器或多核处理器同时处理多个任务。并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执
- 首先利用IDEA创建Maven工程项目1.选择新建项目2.选中Maven骨架3.填写项目名称和项目位置4.Finsh之后默认打开的是pom.
- 方式一: 配置文件 application.propertiesserver.port=7788方式二: java启动命令# 以应用参数的方
- 前言在实际的开发中,当我们完成了一个apk,一般都是英语和中文简体这两种语语言,如果发布了,则需要把字符转换给翻译公司,让他们帮忙翻译,一般
- 最近一年的项目都是在使用Mybatis-plus,感觉挺好用的,也没遇到很多问题,但是在最近项目上线之后,遇到了一些新的需要,在进行新版本开
- 并发与并行并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点
- 概述线程池的好处和使用本篇文章就不赘叙了,不了解的可以参考下面两篇文章:一文全貌了解线程池的正确使用姿势学习线程池原理从手写一个线程池开始那
- 查看apiDemos,找到View/Animation/shake找到对应的动画代码,直接拷贝过来当导入一个项目的时候,报R文件不存在,很多