Mybatis中resultMap使用有感(用于查询表中特定字段并返回自己想要的类型数据)

3 篇文章 0 订阅
1 篇文章 0 订阅

这两天有个可视化项目需要与前端对接,但是数据却处理不成想要的List类型数据(初学没什么功底)

在网上找了许多寻找特定字段的方法,相信大家看到最多的就是以下这个(在这里我引用一下):

<!-- Book全部字段 -->
<resultMap id="BaseResultMap" type="com.lgsc.cjbd.book.model.Book">
    <id column="book_id" property="bookId" jdbcType="BIGINT" />
    <result column="book_name" property="bookName" jdbcType="VARCHAR" />
    <result column="press" property="press" jdbcType="VARCHAR" />
    <result column="author" property="author" jdbcType="VARCHAR" />
    <result column="translator" property="translator" jdbcType="VARCHAR" />
    <result column="isbn" property="isbn" jdbcType="CHAR" />
</resultMap>
 
<!-- 定义resultMap,type为HashMap -->
<resultMap id="PartBookMap" type="java.util.HashMap">
    <id column="book_id" property="bookId" jdbcType="BIGINT" />
    <result column="book_name" property="bookName" jdbcType="VARCHAR" />
    <result column="author" property="author" jdbcType="VARCHAR" />
</resultMap>
 
<!-- 查询语句 -->
<select id="selectPartBook" resultMap="PartBookMap">
    select book_id, book_name, author from book
</select>

 

首先,<!-- Book全部字段 -->下面这个resultMap完全可以不要,我们可以看到它的查询语句select标签这里,完全没有引用到 <!-- Book全部字段 -->那个resultMap的任何东西,所以说没必要存在。

重点是<!-- 定义resultMap,type为HashMap -->这里,我们先了解一下type为什么要为HashMap:因为它用的是List<Map<String, Object>>类型来定义的抽象方法“selectPartBook”的,这个类型返回一个Map类型的列表(大概就是这样子:[{"name":"张三"},{"age":20},]),而type这个属性,就是返回值的类名(我们可以让它为String、Integer.......),所以它想返回一个Map类型的数据,这里就填一个HashMap的类名(Map在HashMap类里面)。

那么接下来的id(黄色字体)就简单了,它就是一个相当于我们姓名的存在,纯粹是为了知道这个resultMap它是谁,随便取都可以。

而resultMap里面的

id(红色字体):用于设置主键字段与领域模型属性的映射关系,里面需要填写数据库中某个表的主键信息

result:用于设置普通字段与领域模型属性的映射关系,里面填写数据库中某个表的其他键信息

column:是数据库的某个表中的列名

property:填写与column中对应的代码内的属性名

例如有Student类,里面有id,name两个属性;数据库中有一个student表,里面有ID(主键),NAME两个列名。

那么就这样填<id column="ID" property="id" />;<result column="NAME" property="name">

jdbcType:就是数据库中数据的类型(推荐不写,写了不但繁琐而且还可能报错,起码我这报错了~.~)

 

所以推荐这样写就完事了:

<resultMap id="PartBookMap" type="java.util.HashMap">
    <id column="book_id" property="bookId" />
    <result column="book_name" property="bookName" />
    <result column="author" property="author" />
<!-- 要查询什么字段,这里面就写什么字段的信息,上面的type想返回上面类型就返回上面类型 -->
</resultMap>
 
<!-- 查询语句 -->
<select id="selectPartBook" resultMap="PartBookMap">
    select book_id, book_name, author from book
</select>

参考网址:https://www.cnblogs.com/qcxdoit/p/7089418.html

参考网址:https://blog.csdn.net/menghuannvxia/article/details/82906341

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值