mysql resulttype_MyBatis-resultType 与 resultMap 中的几种返回类型「建议收藏」

一、返回集合1.返回JavaBean集合publicListselectMyUserByNameLike(Stringname);select*frommyuserwherenamelike#{name}测试方法publicstaticvoidmain(String[]args){SqlSessionsession=null;try{InputStreaminpu…

大家好,又见面了,我是你们的朋友全栈君。

一、返回集合

1.返回JavaBean集合

public List selectMyUserByNameLike(String name);

select * from myuser where name like #{name}

测试方法

public static voidmain(String[] args) {

SqlSession session= null;try{

InputStream inputStream= Resources.getResourceAsStream(“mybatis-config.xml”);

SqlSessionFactory sqlSessionFactory= newSqlSessionFactoryBuilder().build(inputStream);

session=sqlSessionFactory.openSession();

MyUserMapper mapper= session.getMapper(MyUserMapper.class);

List myUsers = mapper.selectMyUserByNameLike(“%a%”);

System.out.println(myUsers);

}catch(IOException e) {

e.printStackTrace();

}finally{if (session != null) {

session.close();

}

}

}

6d4bdba59052e14d16091df9dc0e4203.png

2.返回 Map 集合

select * from myuser

af90b11c4a1334f5b4fa87920a3558f4.png

二、返回 Map

1.一条记录

public Map selectMyUserById(Integer id);

select * from myuser where id = #{id}

060663513f72f834d058cc9e3216a556.png

2.多条记录,需要指定 Map 的 Key 和 Value 的类型

//指定 Map 的 Key 从记录中的 id 列获取

@MapKey(“id”)public Map selectMyUserByGtId(Integer id);

select * from myuser where id > #{id}

057b8c56200de140bf3e3fc443c680ee.png

三、返回 resultMap 自定义结果集封装

关于自动映射封装的配置

默认数据库字段与 JavaBean 对应不上时可开启驼峰命名或查询时使用别名

1.自定义 JavaBean 的封装

确认是否成功可以关掉 MyBatis 的自动映射

public MyUser selectMyUserById(Integer id);

select * from myuser where id = #{id}

b38f21e452cfc1709003969ef6dcef74.png

2.关联查询的封装,一对一,JavaBean 属性包含 JavaBean

b05dc7478e7661e0573d21d9b90e9225.png

public MyUser selectMyUserById(Integer id);

直接调用属性赋值

SELECT m.id, m.name, m.age, m.did, d.name AS dname FROM myuser m,dept d WHERE m.did = d.id AND m.id = #{id}

2a4e155940f608e00203c60b3813e3cf.png

使用 association

SELECT m.id, m.name, m.age, m.did, d.name AS dname FROM myuser m,dept d WHERE m.did = d.id AND m.id = #{id}

使用 association 二次查询,即有两条 SQL

SELECT * FROM myuser WHERE id = #{id}

/p>

PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN”

“http://mybatis.org/dtd/mybatis-3-mapper.dtd”>

select * from dept where id = #{id}

7f99b1110bd267c7d5f6cae2d20eeaac.png

开启懒加载:在没有使用 Dept 的属性时,则只会加载 MyUser 的属性。即只会发送一条 SQL 语句,要使用 Dept 属性时才会发送第二条 SQL。不会一次性发送两条 SQL

3.关联查询的封装,一对多,JavaBean 属性包含 JavaBean 的集合

1193fcc8a4edfe9e520d955164dff06b.png

使用 association

public Dept getDeptById(Integer id);

SELECT m.id,m.name,m.age,m.did,d.name AS dname FROM myuser m,dept d WHERE m.did = d.id AND d.id = #{id}

f65eaf779c06464d59cdc493a16f27fa.png

关闭懒加载,使用二次查询

public Dept getDeptByIdStep(Integer did);

select * from dept where id = #{id}

public List selectMyUserByDid(Integer dId);

select * from myuser where dId = #{did}

e7abb1518dd35bc89f2a46875f8114d9.png

4.鉴别器 discriminator

SELECT * FROM myuser WHERE id = #{id}

select * from dept where id = #{id}

2f8ada759e8c291e46eed92484988a67.png

16915c2740532c941e0703196efb595b.png

上面测试中使用的实体类与数据

public classDept {privateInteger id;privateString name;private List myUsers;

public classMyUser {privateInteger id;privateString name;privateInteger age;private Dept dept;

26c1d7f7fc944b9554f0239c7e3c63ec.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128908.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 阿里云cdn要备案吗_未备案域名cdn

    阿里云cdn要备案吗_未备案域名cdncdn需要备案么?需要的,使用国内的cdn节点,必须要有备案才可以做cdn,相关部门为防止cdn滥用,要求必须先备案。国内节点只要是大型数据中心的,基本都要备案。使用CDN产品是需要备案的,但不限制在提供商处备案,只要那么,无备案的网站就无法使用CDN了吗?作为这些网站的站长就只能选择免备案的CDN服务商了,而免备案的CDN加速基本节点都是在海外的。1、选择安全可靠的CDN市面上也有一些提供免费C…

    2022年9月10日
    0
  • 转载:QT版本系列介绍[通俗易懂]

    转载:QT版本系列介绍[通俗易懂]
    一、Qt简介
    Qt工具包是一个跨平台的C++开发工具。Qt被主要用在了KDE桌面环境的开发中。它是挪威Trolltech公司的产品,2008年6月17日被芬兰的诺基亚(Nokia)公司收购,以增强该公司在跨平台软件研发方面的实力。
    使用Qt开发的软件,可以在任何支援的平台上编译与执行,而不需要修改源代码。可以实现本平台的图形界面风格,也可实现其它平台的图形界面风格。比如您可以在MicrosoftWindows平台下编译出具有苹果公司MacOS图形界面风格的应用程序。

    2022年5月16日
    51
  • 会让程序员争论起来的几个话题

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 1、世界上最好的编程语言 这个话题是千年老梗,但只要论坛有小白提问总会引起争论。 A:Python 是最好的编程语言…

    2021年6月24日
    101
  • Hook 技术简介

    Hook 技术简介#include”Windows.h”#include”tchar.h”#include”resource.h”HINSTANCEg_hInstance;staticHHOOKhHook=NULL;INT_PTRCALLBACKProcWinMain(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam);LR

    2022年5月26日
    59
  • 数据库mysql等相关问题整理总结

    记录和总结Mysql相关的一些知识!Mysql索引Mysql索引整理总结 【四星】❤❤❤❤ 点评:熟悉和了解Mysql 的索引和索引的创建以及索引在实际使用中注意的点! Mysql更新死锁问题MySQL更新死锁问题 【五星】❤❤❤❤❤ 不恰当的update语句使用主键和索引导致mysql死锁 【五星】❤❤❤❤❤ 点…

    2022年2月27日
    189
  • docker 上传本地镜像_不同docker仓库镜像同步

    docker 上传本地镜像_不同docker仓库镜像同步前言之前通过docker搭建过jenkins+python3环境,如果想要在不同的机器上搭建一样的环境,就可以将之前搭建的镜像上传到镜像仓库,这样方便在不同的机器上快速搭建同一套环境。如果公开的话

    2022年7月28日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号