Jtti广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >浅谈mybatis返回单一对象或对象列表的问题
  • 864
分享到

浅谈mybatis返回单一对象或对象列表的问题

mybatis返回对象返回单一对象返回对象列表 2021-12-31 08:12:21 864人浏览 才女
摘要

目录mybatis返回单一对象或对象列表一、说明二、代码测试UserMap.xml映射文件dao文件UserMap.java测试代码和结果文件mybatis返回的对象包含集合mybatis返回单一对象或对象列表 一、说明 返回数据

目录
  • mybatis返回单一对象或对象列表
    • 一、说明
    • 二、代码测试
      • UserMap.xml映射文件
      • dao文件UserMap.java
      • 测试代码和结果文件
  • mybatis返回的对象包含集合

    mybatis返回单一对象或对象列表

    一、说明

    • 返回数据类型由dao中的接口和map.xml文件共同决定。另外,不论是返回单一对象还是对象列表,***map.xml中的配置都是一样的,都是resultMap=”***Map”或resultType=“* .* .*”类型.
    • 每一次mybatis从数据库中select数据之后,都会检查数据条数和dao中定义的返回值是否匹配。
    • 若返回一条数据,dao中定义的返回值是一个对象或对象的List列表,则可以正常匹配,将查询的数据按照dao中定义的返回值存放。
    • 若返回多条数据,dao中定义的返回值是一个对象,则无法将多条数据映射为一个对象,此时mybatis报错。

    二、代码测试

    UserMap.xml映射文件

    
    <resultMap id="BaseResultMap" type="com.ks.SSM.domain.User" >
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="username" property="username" jdbcType="VARCHAR" />
        <result column="passWord" property="password" jdbcType="VARCHAR" />
        <result column="email" property="email" jdbcType="VARCHAR" />
        <result column="qq" property="qq" jdbcType="VARCHAR" />
        <result column="phone" property="phone" jdbcType="VARCHAR" />
        <result column="gender" property="gender" jdbcType="BIT" />
        <result column="birthday" property="birthday" jdbcType="DATE" />
        <result column="city" property="city" jdbcType="VARCHAR" />
        <result column="mood" property="mood" jdbcType="VARCHAR" />
        <result column="single" property="single" jdbcType="BIT" />
        <result column="enrolltime" property="enrolltime" jdbcType="TIMESTAMP" />
        <result column="level" property="level" jdbcType="TINYINT" />
        <result column="status" property="status" jdbcType="BIT" />
        <result column="titlepic" property="titlepic" jdbcType="VARCHAR" />
        <result column="job" property="job" jdbcType="VARCHAR" />
        <result column="logintime" property="logintime" jdbcType="TIMESTAMP" />
        <result column="loginip" property="loginip" jdbcType="VARCHAR" />
        <result column="token" property="token" jdbcType="VARCHAR" />
        <result column="modifytime" property="modifytime" jdbcType="TIMESTAMP" />
      </resultMap>
      <sql id="Base_Column_List" >
        id, username, password, email, qq, phone, gender, birthday, city, mood, single, enrolltime, 
        level, status, titlepic, job, logintime, loginip, token, modifytime
      </sql>
      <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
        select 
        <include refid="Base_Column_List" />
        from user_info
        where id = #{id,jdbcType=BIGINT}
      </select>
      <!-- add by ks -->
        <select id="selectByUserName" resultMap="BaseResultMap" parameterType="java.lang.String" >
        select 
        <include refid="Base_Column_List" />
        from user_info
        where username = #{username,jdbcType=VARCHAR}
       </select>
       <!-- mybatis 非常的智能,返回值统一使用 resultMap="BaseResultMap",mybatis会根据查询到的条目数量自动进行判断,如果是一条就返回对象,如果是多条就返回List对象列表-->
      <select id="selectByEmail" resultMap="BaseResultMap" parameterType="java.lang.String" >
        select 
        <include refid="Base_Column_List" />
        from user_info
        where email = #{email,jdbcType=VARCHAR}
       </select>
       <!-- end by ks -->

    dao文件UserMap.java

    
    public interface UserMapper {
        User selectByPrimaryKey(Long id);
        User selectByUserName(String username );
        
        List<User> selectByEmail(String email );
    }

    测试代码和结果文件

    
    @RunWith(springJUnit4ClassRunner.class)     //表示继承了SpringJUnit4ClassRunner类
    @ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
    public class TestMyBatis {
      private static Logger logger = Logger.getLogger(TestMyBatis.class);
      @Resource
      private UserMapper userDao;
      @Test
      public void testMybatis() {
        User user = userDao.selectByUserName("ks");
        logger.info("user.........................");
        logger.info(JSON.tojsONString(user));
        List<User> users=userDao.selectByEmail("ks");
        logger.info("list.........................");
        for(User userTemp : users)
        {
            logger.info(JSON.toJSONString(userTemp));
        }
      }
    }

    测试结果

    mybatis 返回的对象包含集合

    DeviceQuestionInstruction.java

    
    import com.hikari.cloud.data.entity.TbInstruction;
    import lombok.Data;
    import java.util.Date;
    import java.util.List;
    @Data
    public class DeviceQuestionInstruction {//tb_instruction  使用说明表
        private String dvqsTitle;
        private List<TbInstruction> instructionList;
    }
    

    TbInstruction.java

    
    import lombok.Data;
    import java.util.Date;
    @Data
    public class TbInstruction {//tb_instruction  使用说明表
        private Long id;
        private Long userId;
        private String title;
        private String detail;
        private String url;
        private Integer type;
        private Integer suffix;
        private String deviceCateGory;
        private String deviceTypeName;
        private String deviceTypeNum;
        private Integer views;
        private Long dvqsId;
        private Integer dvqsLevel;
        private Date gmtCreate;
    }

    TbDeviceQuestionMapper.java

    
    import com.hikari.cloud.data.bean.DeviceQuestionInstruction;
    import org.apache.ibatis.annotations.Param;
    import java.util.List;
    public interface TbDeviceQuestionMapper {
        List<DeviceQuestionInstruction> findByNo(@Param("deviceTypeNo") String deviceTypeNo);
    }

    TbDeviceQuestionMapper.xml

    
    <?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.hikari.cloud.data.mapper.TbDeviceQuestionMapper">
        <resultMap id="dataMap" type="com.hikari.cloud.data.bean.DeviceQuestionInstruction">
            <result column="dvqs_title" property="dvqsTitle"/>
            <collection property="instructionList" resultMap="insResultMap"/>
        </resultMap>
        <resultMap id="insResultMap" type="com.hikari.cloud.data.entity.TbInstruction">
            <result column="id" property="id"/>
            <result column="user_id" property="userId"/>
            <result column="title" property="title"/>
            <result column="detail" property="detail"/>
            <result column="url" property="url"/>
            <result column="type" property="type"/>
            <result column="suffix" property="suffix"/>
            <result column="device_category" property="deviceCategory"/>
            <result column="device_type_name" property="deviceTypeName"/>
            <result column="device_type_num" property="deviceTypeNum"/>
            <result column="views" property="views"/>
            <result column="dvqs_id" property="dvqsId"/>
            <result column="dvqs_level" property="dvqsLevel"/>
            <result column="gmt_create" property="gmtCreate"/>
        </resultMap>
        <select id="findByNo" resultType="com.hikari.cloud.data.bean.DeviceQuestionInstruction" resultMap="dataMap">
            SELECT tb_device_question.title AS dvqs_title,tb_instruction.* FROM tb_device_question
            LEFT JOIN tb_instruction
            ON tb_device_question.id=tb_instruction.dvqs_id
            WHERE tb_device_question.device_type_no='HSAT-K5'
            ORDER BY tb_instruction.dvqs_level ASC
        </select>
    </mapper>
    

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

    --结束END--

    本文标题: 浅谈mybatis返回单一对象或对象列表的问题

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

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

    猜你喜欢
    • wps怎么为同一对象添加多个动画
      这篇文章主要介绍wps怎么为同一对象添加多个动画,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!添加方法:首先打开需要进行操作的ppt演示文档,选中指定对象;然后点击页面顶部的“动画”选项卡,选择指定动画效果;接着点击...
      705
      2023-09-29
    • 关于mybatis一对一查询一对多查询遇到的问题
      springboot整合mybatis项目博客系统文章,相册,评论,标签,等表IDEA为最新版2021.3.3,mysql数据库为最新版Navicat(或许有些字段不支持特定的命名)...
      754
      2023-09-29
      mybatis一对一查询 mybatis一对多查询
    • mybatis一对一查询一对多查询遇到的问题怎么解决
      这篇文章主要介绍“mybatis一对一查询一对多查询遇到的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mybatis一对一查询一对多查询遇到的问题怎么解决”文章能帮助大家解决问题。实体...
      553
      2023-09-29
    • 怎么理解ES6对象
      这篇文章主要讲解了“怎么理解ES6对象”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解ES6对象”吧!对象字面量属性的简洁表示法ES6允许对象的属性直...
      411
      2023-09-29
      es6
    • ES6对象实例分析
      本篇内容介绍了“ES6对象实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!对象字面量属性的简洁表示法ES6允许对象的属性直接写变量,这...
      413
      2023-09-29
    • 基于mybatis一对多查询内层排序的问题
      目录mybatis一对多查询内层排序mybatis多排序问题mybatis一对多查询内层排序 <!--根据板块id查询所有主题->指标->维度--> ...
      133
      2023-09-29
      mybatis 排序 mybatis一对多查询 mybatis查询一对多
    • ES6对象属性怎么优化
      这篇文章主要为大家展示了“ES6对象属性怎么优化”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ES6对象属性怎么优化”这篇文章吧。ES6常见小优化 - 对象属性const x,y&nb...
      658
      2023-09-29
    • ES6对象如何使用
      本篇内容介绍了“ES6对象如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、对象和属性和方法JavaScript中对象:var&nb...
      506
      2023-09-29
    • PHP5对象simplexml的实例用法
      这篇文章主要讲解了“PHP5对象simplexml的实例用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP5对象simplexml的实例用法”吧!PHP5对象simplexml是一个新...
      497
      2023-09-29
    • Mybatis怎么解决collection一对多问题
      这篇文章主要介绍了Mybatis怎么解决collection一对多问题的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mybatis怎么解决collection一对多问题文章都会有所收获,下面我们一起来看看吧。先...
      468
      2023-09-29
    • Mybatis一对多查询列表属性处理示例详解
      目录一、说明1.<collection>标签属性说明2. 示例代码二、平铺查询三、 嵌套查询(Nested Select for Collection)3.1 ...
      956
      2023-09-29
      mybatis 一对多查询 mybatis 1对多查询 mybatis 查询列表属性
    • js fill函数填充数组或对象的问题怎么解决
      这篇文章主要讲解了“js fill函数填充数组或对象的问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“js fill函数填充数组或对象的问题怎么解决”吧!js ...
      348
      2023-09-29
    • mybatis的一对多映射
          延续mybatis的一对一问题,还是上面一对一举得那个例子(http://fengcl.blog.51cto.com/9961331/1875657),如果一...
      219
      2023-09-29
      mybatis 一对多 batis
    • 解析Mybatis对sql表的一对多查询问题
      Mybatisd对sql表的一对多查询 select * from projectrecord pr left join projects po on po.pid=p...
      689
      2023-09-29
      Mybatis一对多查询 Mybatis sql表
    • Mybatis怎么实现一对一、一对多关联查询
      今天小编给大家分享一下Mybatis怎么实现一对一、一对多关联查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Mybati...
      388
      2023-09-29
    • 解决mybatis一对多查询resultMap只返回了一条记录问题
      问题描述:因为领导的一个需求,需要用到使用resultMap,很久没使用了,结果就除了点意外。就记录下这个问题 准备两个类:author(作者)和book(书),数据库创建对应的au...
      854
      2023-09-29
      mybatis一对多查询resultMap mybatis一对多查询 mybatis resultMap
    • 如何解决Vue不能检测数组或对象变动的问题
      小编给大家分享一下如何解决Vue不能检测数组或对象变动的问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!来看一个实例:<!DOCTYPE html> <htm...
      600
      2023-09-29
      vue 数组
    • Mybatis | Mybatis标签collection一对多的使用
      Mybatis标签collection一对多的使用 一、colleciton 标签二、collection使用方法1. 方法一: 嵌套结果映射2. 方法二: 嵌套select 查询 三、 ...
      350
      2023-09-29
      mybatis java mysql
    • es6对象增加新的属性是什么
      本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。JavaScript 中对象是非常重要的数据结构,ES6 对对象进行了极大的扩展,使用上也更加简洁。其中es6对象增加新的属性是“name”。对象方法的 ...
      275
      2023-09-29
      ES6 javascript
    • es6对象增加新的属性怎么使用
      今天小编给大家分享一下es6对象增加新的属性怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。es6对象增加新的属性是“...
      139
      2023-09-29
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作