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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java打印数组内容

    java打印数组内容在java中直接输出数组只能得到引用地址byte[]bytes={1,2,3,4,5};int[]ints={1,2,3,4,5};System.out.println(bytes);System.out.println(ints);输出[B@1b6d3586[S@4554617c打印数组内容publicstaticvoidmain(Stringargs

    2022年4月29日
    52
  • kubeedge 安装部署(适用于Ubuntu)「建议收藏」

    kubeedge 安装部署(适用于Ubuntu)「建议收藏」kubeedge安装部署(适用于Ubuntu)基础环境:安装了Ubuntu18.04操作系统的两台虚拟机(查看操作系统版本命令:cat/etc/os-release)部署kubeedge1.1.0版本根据keadm源码安装部署步骤整理(无法直接使用keadm工具完成部署)一、配置源,写入以下内容到/etc/apt/sources.listroot@ubuntu:…

    2022年7月21日
    28
  • 服务降级和服务熔断

    服务降级和服务熔断转载自:https://blog.csdn.net/llianlianpay/article/details/79768890 服务熔断  在微服务架构中,微服务之间的数据交互通过远程调用完成,微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,此时如果链路上某个微服务的调用响应时间过长或者不可用,那么对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,导致“雪崩…

    2022年6月7日
    32
  • 把Android系统签名弄成jks

    把Android系统签名弄成jks假设我们得到了系统签名文件:platform.pk8、platform.x509.pem,还需要一个用于签名的文件:signapk.jar,这里提供了一份下载连接,可供练习使用:链接:https://pan.baidu.com/s/1OiBcVyhZVqTulb6HXwcqHA提取码:7g81不同的系统,系统签名是不一样的,所以你们下载我的这个签名文件是用不到你的系统上的,但是signapk.jar是通用的,什么系统签名都可以使用他。当你有你的系统签名文件时,如何把一个apk签名为系统签名呢?如下:

    2022年6月21日
    30
  • 【linux】Redhat Linux 关闭防火墙命令[通俗易懂]

    【linux】Redhat Linux 关闭防火墙命令[通俗易懂]1

    2025年9月19日
    4
  • spring boot 2.1学习笔记【五】SpringBootTest单元测试及日志「建议收藏」

    spring boot 2.1学习笔记【五】SpringBootTest单元测试及日志「建议收藏」springboot2.1单元测试,及日志输出

    2022年6月10日
    79

发表回复

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

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