广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >mybatis处理返回结果集
  • 234
分享到

mybatis处理返回结果集

mybatisjava数据库 2023-09-03 11:09:38 234人浏览 薄情痞子
摘要

结果处理 1 简单类型输出映射 返回简单基本类型 //查询管理员总数int adminCount();       select count(*) from admin 返回结果需要定义后才能使用简称 eg:resultType

结果处理

1 简单类型输出映射

返回简单基本类型

//查询管理员总数int adminCount();
        select count(*) from admin
  • 返回结果需要定义后才能使用简称

    • eg:resultType="Admin" 已经定义过别名了,所以就可以使用简称

    • 那么java中其它常用类型简称如何使用?(不使用简称就需要用全类名,eg:java.util.List)

      • mybatis底层源码中定义了一些常用的类型的简称

794769acd7964b44bb646cee0d315342.png

dc81f836aa394b8faec49d21ea023cca.png

dc987f4058494cfc935327cdc9978b91.png

  • 也可以在官网中查看定义好的类型简称或者自己可以重写已有的类型处理器或创建自己的类型处理器来处理不支持的或非标准的类型,具体参考mybatis – MyBatis 3 | 配置

2 对象映射

  • mybatis会将查询到的结果自动封装到一个对象中,会自己创建给定类型的类的对象(通过是否执行无参构造方法我们可以看到)

  • 自动封装的条件:

    • 开启了全局的自动结果映射,PARTIAL默认是单张表开启的a940773f98644fdea54f5730f0e1c5ee.png

    • 数据库列名与属性名名字相同,mybatis会自动将查询结果封装到pojo对象中;如果不一样,比如java中使用标准驼峰命名,数据库中使用下划线连接命名,这个时候可以通过开启驼峰命名自动映射或开启全局设置实现自动转换98bd7ae4827b4f609913b89495bd4780.png

例如: 

定义的类中的属性名:

a79aa7fbe9c545aeb913a61e3ec3cfef.png

     select id,account,password,admin_gender from admin

420e8f96e86c48f294092cc8121f0023.png

3 特殊处理定义 resultMap

定义 resutlMap

  • 在resutlMap 标签中,我们可以自定义结果映射

                      

  (1) resutlMap 的 id 属性是 resutlMap 的唯一标识,本例中定义为“adminMap”

  (2) resutlMap 的 id 属性是映射的 POJO 类

  (3) id 标签映射主键,result 标签映射非主键

  (4) property 设置 POJO 的属性名,column 数据库中列名

使用 resutlMap

    SELECT         s.id,        s.num,        s.name,        s.gender,        s.birthday,        d.num dormNum,        a.account,        s.oper_time    FROM student s              LEFT JOIN dorm d ON s.dormid = d.id              LEFT JOIN admin a ON s.adminid = a.id              WHERE s.id = #{id}

测试

@Testpublic void find() {    SqlSession sqlSession = MybatisUtil.getSqlSession();    StudentDao studentDao = sqlSession.getMapper(StudentDao.class);        Student student = studentDao.findStudentById(1);        sqlSession.commit();    sqlSession.close();}

c98d4c824a6b4410869d4076354dd5cf.png

  • 在这里还要补充一点:如果在拿到学生信息后,需要获取学生的宿舍号,首先要拿到学生对象中的Dorm对象,然后再获取Dorm对象中属性

    System.out.println(student.getDorm().getNum());
  • 注意:查询多个学生信息只需要将sq语句中的WHERE s.id = #{id}这个条件给去掉,resultMap和查询一个是一样的

    List findStudents();

方法二:嵌套查询(把sql分成多次查询,先查询学生信息,再通过外键查询宿舍和操作人信息)

                                    
     select num from dorm where id = #{dormid}
        SELECT            d.id,            d.num,            s.num,            s.name,            a.account       FROM dorm d       LEFT JOIN admin a ON d.adminid = a.id       LEFT JOIN student s ON d.id = s.dormid                  WHERE d.id = 1

测试:

@Testpublic void find(){    SqlSession sqlSession = MybatisUtil.getSqlSession();    DormDao dormDao = sqlSession.getMapper(DormDao.class);    //通过id查询宿舍和这个宿舍中所住学生的信息    Dorm dorm = dormDao.findDormById(1);    sqlSession.close();}

3fe786f7017d4affad6e0cebc3f3b0fd.png

方法2:嵌套查询

                
    SELECT account FROM admin WHERE id = #{adminid}     SELECT            d.id,            d.num,            s.num,            s.name,            a.account       FROM dorm d       LEFT JOIN admin a ON d.adminid = a.id       LEFT JOIN student s ON d.id = s.dormid

测试:

@Testpublic void find(){    SqlSession sqlSession = MybatisUtil.getSqlSession();    DormDao dormDao = sqlSession.getMapper(DormDao.class);    //查询每个宿舍,并关联每个宿舍中有多少个学生    List dorms = dormDao.findDorms();        // 遍历所有宿舍    for (Dorm dorm:dorms){        System.out.println(dorm);        // 获取到宿舍中所有学生信息        for (Student student:dorm.getStudents()){            System.out.println(student.getNum()+":"+student.getName());        }    }    sqlSession.close();}

可以看到查询出了所有的宿舍以及宿舍所住学生的信息:

2c07788c7ef44cceb651d6a8efafeb47.png

方法2:嵌套查询

                
    SELECT account FROM admin WHERE id = #{adminid}

测试:806ac0c3e5de483b845b73056249e1fb.png

 

来源地址:https://blog.csdn.net/m0_58450531/article/details/128510519

--结束END--

本文标题: mybatis处理返回结果集

本文链接: https://www.lsjlt.com/news/392092.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mybatis处理返回结果集
    结果处理 1 简单类型输出映射 返回简单基本类型 //查询管理员总数int adminCount();       select count(*) from admin 返回结果需要定义后才能使用简称 eg:resultType...
    99+
    2023-09-03
    mybatis java 数据库
  • mybatis怎么返回结果集
    MyBatis可以通过以下方式返回结果集: 查询单个结果:使用`selectOne`方法执行查询,并返回一个对象作为结果。 Us...
    99+
    2023-10-25
    mybatis
  • mybatis怎么返回多个结果集
    MyBatis是一个持久化框架,用于将数据库操作与Java对象的映射进行分离。在MyBatis中返回多个结果集可以通过以下两种方式实...
    99+
    2023-09-29
    mybatis
  • mybatis调用mysql存储过程(返回参数,单结果集,多结果集)
    目录一、接收一个返回值注意事项:存储过程主要分成三类:二、接收list结果集三、返回多个结果集四、第二种配置也可以一、接收一个返回值 使用Map接收返回参数,output参数放在传入...
    99+
    2022-11-12
  • mybatis如何处理结果集
    MyBatis处理结果集的方式取决于SQL语句的类型和返回类型的配置。 对于查询语句,MyBatis通常将结果集映射到一个对象或集合...
    99+
    2023-10-25
    mybatis
  • GolangHttp请求返回结果处理
    在 Go 中 Http 请求的返回结果为 *http.Response 类型,Response.Body 类型为 io.Reader,把请求结果转化为Map需要进行一些处理。 写一个...
    99+
    2022-11-11
  • Mybatis-plus配置分页插件返回统一结果集
    目录一、MyBatisPlusConfig中配置分页插件1. 分页实现的原理二、统一结果集1. 创建返回码定义类2. 创建结果集类三、编写分页接口1. 先编写查询类2. servic...
    99+
    2022-11-13
  • mybatis返回map结果集@MapKey使用的场景分析
    目录mybatis返回map结果集@MapKey使用场景使用id作为map的keMap的value为Map,一条记录对应一个Map使用name作为map的key mybat...
    99+
    2022-11-13
  • mybatis调用sqlserver存储过程返回结果集的方法
    第一种:返回值通过out输出 sqlserver存储 testMapper.xml 两种都能接收到数据的, 因为我的实体类字段与数据库的不一致,上面图片是按照数据库字段定义的,下...
    99+
    2022-11-12
  • mybatis中返回多个map结果问题
    目录mybatis返回多个map结果mybatis返回map类型的注意事项及小技巧1.resultType="java.util.Map" 2.定义一个...
    99+
    2022-11-13
  • jdbc返回结果集怎么分页
    在使用JDBC查询数据库并返回结果集时,可以使用LIMIT和OFFSET来实现分页。LIMIT用于限制返回的数据行数,OFFSET用...
    99+
    2023-10-25
    jdbc
  • mybatis返回的map结果如何设置有序
    目录mybatis返回的map结果设置有序mybatis中查询的结果有序展示1、分析为啥结果是乱序2、修改补充mybatis返回的map结果设置有序 mybatis返回的map结果设...
    99+
    2022-11-13
  • mybatis返回的map结果怎么设置有序
    今天给大家介绍一下mybatis返回的map结果怎么设置有序。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。mybatis返回的map结果设置有序mybatis...
    99+
    2023-06-28
  • mybatis返回keyvaluemap集合方式
    目录mybatis返回key value map集合mybatis返回map,key为主键,value为对象mybatis返回key value map集合 XML:文件 ...
    99+
    2022-11-13
  • vue中返回结果是promise的处理方式
    目录返回结果是promise的处理对promise的一些理解1.promise是一种异步解决方案2.async await返回结果是promise的处理 调用element-ui中提...
    99+
    2022-11-13
  • jdbc返回结果集的方法是什么
    在Java中,使用JDBC(Java Database Connectivity)连接数据库并执行查询语句时,可以通过以下方法来返回...
    99+
    2023-10-30
    jdbc
  • Mybatis怎么把返回结果封装成map类型
    这篇文章主要讲解了“Mybatis怎么把返回结果封装成map类型”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis怎么把返回结果封装成map类型”吧!一、Mybatis把返回结果封...
    99+
    2023-07-05
  • Springboot项目异常处理及返回结果统一
    目录背景返回结果定义异常的定义异常的处理返回结果的处理完整代码使用示例背景 在创建项目的初期,我们需要规范后端返回的数据结构,以便更好地与前端开发人员合作。 比如后端返回的数据为: ...
    99+
    2022-11-13
    Springboot项目异常处理返回结果统一 Springboot项目异常处理
  • Android中activity处理返回结果的实现方式
    大家在网上购物时都有这样一个体验,在确认订单选择收货人以及地址时,会跳转页面到我们存入网站内的所有收货信息(包含收货地址,收货人)的界面供我们选择,一旦我们点击其中某一条信息,...
    99+
    2022-06-06
    activity Android
  • mysql存储过程 返回 list结果集方式
    目录mysql存储过程 返回 list结果集思路mysql存储过程和存储函数练习存储过程和存储函数语法存储函数案例演示mysql存储过程 返回 list结果集 思路 直接链接多个表返...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作