Mybatis ResultType处理返回类型

article/2025/9/26 6:31:08

目录

 1. 使用resultType返回List

 2. 使用resultType返回单个对象

3. 使用resultType返回List,适用于多表查询返回结果集 

 4. 使用resultType返回Map,适用于多表查询返回单个结果集,object>


 1. 使用resultType返回List<T>

  • Mapper.xml 
<select id="resultType2" resultType="String">selectbook_namefrom tb_book</select>
  •  service层
List<String> resultType2();
  • 实现类
    //创建对象private BookMapper bookMapper;/*** 给bookMapper set,get方法* @return*/public BookMapper getBookMapper() {return bookMapper;}public void setBookMapper(BookMapper bookMapper) {this.bookMapper = bookMapper;}@Overridepublic List<String> resultType2() {return bookMapper.resultType2();}
  •  使用junit测试
package com.jmh.mybatis.service.impl;import com.jmh.mybatis.mapper.BookMapper;
import com.jmh.mybatis.model.Book;
import com.jmh.mybatis.model.BookVo;
import com.jmh.mybatis.service.IBookService;
import com.jmh.mybatis.utils.MybatisSqlSessionFactory;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.util.List;
import java.util.Map;
import java.util.Set;import static org.junit.Assert.*;public class DemoTest {//获取对象private Book book;private IBookService iBookService;private SqlSession sqlSession;@Beforepublic void setUp() throws Exception {book=new Book();sqlSession = MybatisSqlSessionFactory.getSqlsession();BookMapper mapper = sqlSession.getMapper(BookMapper.class);BookServiceImpl iml=new BookServiceImpl();iml.setBookMapper(mapper);iBookService= iml;}@Afterpublic void tearDown() throws Exception {sqlSession.commit();MybatisSqlSessionFactory.closeSqlsession();}@Testpublic void resultType2() {List<String> books = iBookService.resultType2();for (String b : books) {System.out.println(b);}}}
  •  测试如下

 2. 使用resultType返回单个对象

  • Mapper.xml 
  <select id="resultType3" resultType="com.jmh.mybatis.model.Book">select<include refid="Base_Column_List" />from tb_book where book_id=306</select>
  •  service层
Book resultType3();
  •  实现类
    //创建对象private BookMapper bookMapper;/*** 给bookMapper set,get方法* @return*/public BookMapper getBookMapper() {return bookMapper;}public void setBookMapper(BookMapper bookMapper) {this.bookMapper = bookMapper;}@Overridepublic Book resultType3() {return bookMapper.resultType3();}
  •  使用junit测试
    package com.jmh.mybatis.service.impl;import com.jmh.mybatis.mapper.BookMapper;
import com.jmh.mybatis.model.Book;
import com.jmh.mybatis.model.BookVo;
import com.jmh.mybatis.service.IBookService;
import com.jmh.mybatis.utils.MybatisSqlSessionFactory;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.util.List;
import java.util.Map;
import java.util.Set;import static org.junit.Assert.*;public class DemoTest {//获取对象private Book book;private IBookService iBookService;private SqlSession sqlSession;@Beforepublic void setUp() throws Exception {book=new Book();sqlSession = MybatisSqlSessionFactory.getSqlsession();BookMapper mapper = sqlSession.getMapper(BookMapper.class);BookServiceImpl iml=new BookServiceImpl();iml.setBookMapper(mapper);iBookService= iml;}@Afterpublic void tearDown() throws Exception {sqlSession.commit();MybatisSqlSessionFactory.closeSqlsession();}@Testpublic void resultType3() {Book book = iBookService.resultType3();System.out.println(book);}}

3. 使用resultType返回List<Map>,适用于多表查询返回结果集 

  • mapper接口 

    需要使用注解才能使用map其实这个主要功能也不大 将就着用吧

    @MapKey("id")List<Map<String,Object>> resultType4();
  • mapper.xml 
  <select id="resultType4" resultType="java.util.Map">select book_id,price,book_name from tb_book</select>
  •  service层
List<Map<String,Object>> resultType4();
  •  实现类
    //创建对象private BookMapper bookMapper;/*** 给bookMapper set,get方法* @return*/public BookMapper getBookMapper() {return bookMapper;}public void setBookMapper(BookMapper bookMapper) {this.bookMapper = bookMapper;}@Overridepublic List<Map<String, Object>> resultType4() {return bookMapper.resultType4();}
  •  使用junit测试
package com.jmh.mybatis.service.impl;import com.jmh.mybatis.mapper.BookMapper;
import com.jmh.mybatis.model.Book;
import com.jmh.mybatis.model.BookVo;
import com.jmh.mybatis.service.IBookService;
import com.jmh.mybatis.utils.MybatisSqlSessionFactory;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.util.List;
import java.util.Map;
import java.util.Set;import static org.junit.Assert.*;public class DemoTest {//获取对象private Book book;private IBookService iBookService;private SqlSession sqlSession;@Beforepublic void setUp() throws Exception {book=new Book();sqlSession = MybatisSqlSessionFactory.getSqlsession();BookMapper mapper = sqlSession.getMapper(BookMapper.class);BookServiceImpl iml=new BookServiceImpl();iml.setBookMapper(mapper);iBookService= iml;}@Afterpublic void tearDown() throws Exception {sqlSession.commit();MybatisSqlSessionFactory.closeSqlsession();}@Testpublic void resultType4() {List<Map<String, Object>> maps = iBookService.resultType4();for (Map<String, Object> map : maps) {System.out.println(map);}}}

 4. 使用resultType返回Map<String,Object>,适用于多表查询返回单个结果集

  •  mapper接口
@MapKey("id")Map<String,Object> resultType5();
  • mapper.xml 
  <select id="resultType5" resultType="java.util.Map">select book_id,price from tb_book</select>
  •  service层
Map<String,Object> resultType5();
  •  实现类
    //创建对象private BookMapper bookMapper;/*** 给bookMapper set,get方法* @return*/public BookMapper getBookMapper() {return bookMapper;}public void setBookMapper(BookMapper bookMapper) {this.bookMapper = bookMapper;}@Overridepublic Map<String, Object> resultType5() {return bookMapper.resultType5();}
  •  使用junit测试
package com.jmh.mybatis.service.impl;import com.jmh.mybatis.mapper.BookMapper;
import com.jmh.mybatis.model.Book;
import com.jmh.mybatis.model.BookVo;
import com.jmh.mybatis.service.IBookService;
import com.jmh.mybatis.utils.MybatisSqlSessionFactory;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.util.List;
import java.util.Map;
import java.util.Set;import static org.junit.Assert.*;public class DemoTest {//获取对象private Book book;private IBookService iBookService;private SqlSession sqlSession;@Beforepublic void setUp() throws Exception {book=new Book();sqlSession = MybatisSqlSessionFactory.getSqlsession();BookMapper mapper = sqlSession.getMapper(BookMapper.class);BookServiceImpl iml=new BookServiceImpl();iml.setBookMapper(mapper);iBookService= iml;}@Afterpublic void tearDown() throws Exception {sqlSession.commit();MybatisSqlSessionFactory.closeSqlsession();
}@Testpublic void resultType5() {Map<String, Object> map = iBookService.resultType5();System.out.println(map);}
}



http://chatgpt.dhexx.cn/article/2bNZAX3u.shtml

相关文章

详解Mybatis中的resultType和resultMap

resultType和resultMap是Mybatis基于xml配置开发过程中sql语句所在标签的一种属性&#xff0c;它们的特性如下&#xff1a; 1. resultType&#xff1a;该属性是为了配置mybatis查询的返回结果类型&#xff0c;如果返回值类型是整型数据&#xff0c;该属性处可以配置int&#x…

redis的incr+expire的坑

背景 用户需要进行ocr识别&#xff0c;为了防止接口被刷&#xff0c;这里面做了一个限制(每分钟调用次数不能超过xxx次)。 经过调研后&#xff0c;决定使用redis的incr和expire来实现这个功能 说明&#xff1a;以下代码使用golang实现 第一版代码 // 执行ocr调用 func (o *ocr…

AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed

&#x1f4a1; Note&#xff1a; 本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdf&#xff08;issue F&#xff09;整理的。 主要是分享AXI3.0和4.0部分。 如果内容有问题请大家在评论区中指出&#xff0c;有补充或者疑问也可以发在评论区&#xff0c;互相学习 &#…

redis中的incr和incrBy

今天遇到这样几个例子&#xff0c;(1)闸机上传一条交易数据时&#xff0c;接收流水号&#xff08;不是主键&#xff09;就在原来基础上自增&#xff0c;并且每天更换。(2)每次上传出站交易数据&#xff0c;闸机都要累计交易金额。 这两个例子都可以用incrBy&#xff0c;或是例…

Redis爬坑记(一):incr命令和expire命令的误区

关注公众号要实现的功能&#xff1a;限制用户的每分钟的访问次数一个有严重bug的代码&#xff1a;每次访问来了&#xff0c;就执行代码块二&#xff0c;当第一次访问&#xff0c;就走else语句&#xff0c;设置当前用户的次数为1&#xff0c;且设置该key的有效期是一分钟。 在一…

Redis INCR命令

路人甲&#xff1a;嘿&#xff0c;兄弟&#xff0c;知不知道redis的incr命令怎么用&#xff1f; 路人丙&#xff1a;啥&#xff1f;你这都不知道&#xff0c;不就是将key值增1嘛&#xff1f; 路人甲&#xff1a;可以一直一直一直加吗&#xff1f; 路人丙&#xff1a;…… 下图是…

《Redis系列第三篇、incr与decr使用|CSDN创作打卡》

incr与decr的效率要高于set操作&#xff0c;故而个人在开发过程中用作高并发的时候的限制器&#xff0c;效果非常nice的。 接下来看看具体用法与官方解释啊。 incr自增将存储的key数字加一 使用方法 incr testNum incr testNum incr testNum incr testNum incr testNum incr …

incr、incrby、decr、decrby命令的作用和用法

redis中incr、incrby、decr、decrby属于string数据结构,它们是原子性递增或递减操作。 incr递增1并返回递增后的结果&#xff1b;incrby根据指定值做递增或递减操作并返回递增或递减后的结果(incrby递增或递减取决于传入值的正负)&#xff1b;decr递减1并返回递减后的结果&…

Redis:字符串INCR、INCRBY、INCRBYFLOAT、DECR、DECRBY命令介绍

INCR INCR key可用版本&#xff1a; > 1.0.0 时间复杂度&#xff1a; O(1)为键key对应的数字字符串&#xff08;整数&#xff09;加上一。 演示 如果键key不存在&#xff0c; 那么它的值会先被初始化为 0 &#xff0c; 然后再执行INCR命令。 INCR命令会返回键key对应的数…

利用Redis原子计数器incr实现计数器及接口限流

一、INCR命令介绍 Redis Incr 命令将 key 中储存的数字值增一。 如果 key 不存在&#xff0c;那么 key 的值会先被初始化为 0 &#xff0c;然后再执行 INCR 操作。且将key的有效时间设置为长期有效 。 如果值包含错误的类型&#xff0c;或字符串类型的值不能表示为数字&#x…

后渗透——内网转发之利用EarthWorm与proxifier搭建正向代理服务器

EarthWorm是一款用于开启 SOCKS v5 代理服务的工具&#xff0c;基于标准 C 开发&#xff0c;可提供多平台间的转接通讯&#xff0c;用于复杂网络环境下的数据转发。 Proxifier是一款功能非常强大的socks5客户端&#xff0c;可以让不支持通过代理服务器工作的网络程序能通过HTTP…

红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)

文章目录 隧道应用reGeorg内网穿透SSH本地转发(正向)场景一场景二 SSH远程转发(反向)Earthworm Socks5代理正向代理反向代理 Tunna正向代理ICMP隧道DNS隧道Frp穿透推荐阅读&工具包 隧道应用 在进行内网渗透时&#xff0c;由于外网主机无法直接连接内网主机&#xff0c;所以…

earthworm四步走(解决拨入VPN后使用burp无法抓包的问题)

一、earthworm下载路径&#xff1a;https://github.com/idlefire/ew 二|、解压文件 三、执行命令&#xff1a;ew_for_Win.exe -s ssocksd -l 8888 四、设置burp上游代理

渗透测试之反弹代理(socks代理) (Earthworm工具) (windows和linux中的代理)

反弹代理 内网渗透不光只是反弹一个shell&#xff0c;反弹一个端口&#xff0c;我们更需要对内网进行更深一步的扫描和渗透&#xff0c;这时候就需要设置找到一个代理服务器&#xff0c;充当外网和内网数据转发的节点。 所以出现了反弹代理&#xff0c;也叫反弹socket。 使用…

NOIP 2016 提高组 复赛 第二天 第二题 蚯蚓 earthworm AC代码(单调队列)+15分代码(排序)+35分代码(堆 大顶堆 优先队列)+85分代码(更改堆中元素)

NOIP 2016 提高组 复赛 第二天 第二题 蚯蚓 earthworm AC代码(单调队列)15分代码(排序)35分代码(堆 大顶堆 优先队列)85分代码(更改堆中元素) 总目录详见&#xff1a;NOIP 提高组 复赛 试题 目录 信奥 历年 在线测评地址&#xff1a;https://www.luogu.com.cn/problem/P…

后渗透——内网转发之利用EarthWorm与proxifier搭建反向代理服务器

EarthWorm是一款用于开启 SOCKS v5 代理服务的工具&#xff0c;基于标准 C 开发&#xff0c;可提供多平台间的转接通讯&#xff0c;用于复杂网络环境下的数据转发。 Proxifier是一款功能非常强大的socks5客户端&#xff0c;可以让不支持通过代理服务器工作的网络程序能通过HTTP…

【教程】使用Earthworm (EW) 做Socks5代理完成内网穿透

EW 是一套便携式的网络穿透工具&#xff0c;具有 SOCKS v5服务架设和端口转发两大核心功能&#xff0c;可在复杂网络环境下完成网络穿透。 考虑到该工具影响很坏&#xff0c;该工具永久停止更新。 介绍&#xff1a; 示意图&#xff1a; 该工具能够以“正向”、“反向”、“…

内网穿透大杀器--EarthWorm

0x00 前言如果感觉本文对你有帮助&#xff0c;请在文章末尾点个赞&#xff0c;谢谢表哥们支持&#xff01; 当你在内网渗透&#xff0c;并且拿下一台机器的权限时&#xff0c;你是不是觉得已经算是一次完整的渗透了&#xff1f; 不来一次内网漫游&#xff0c;渗透是不完整的&am…

EW(EarthWorm) 反向 socks5 代理

今天本想对学校的内网服务器进行人生中第一次横向渗透&#xff0c;奈何情况不允许&#xff0c;但好歹学习了一些东西&#xff0c;总要写下来保存 工具&#xff1a; EW: https://github.com/idlefire/ew proxychains: https://github.com/rofl0r/proxychains-ng 小米随身wifi…