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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • phpstom 2022.01 激活码【最新永久激活】2022.02.03

    (phpstom 2022.01 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • Ajax发送请求的四个步骤

    Ajax发送请求的四个步骤<scripttype=”text/javascript”> window.onload=function(){ varbtn=document.getElementById(‘btn’); btn.onclick=function(){ //使用Ajax发送请求需要如下几步 //1、创建XMLHttpRequest(); varxhr=…

  • comparable java_java rectangle

    comparable java_java rectangle在JAVA中使用eXtremeDBautoid,主要有以下几个问题:定义插入数据已经获取记录,如何获得autoid知道autoid,如何获取记录定义autoid在类的定义前加入注释:@Persistent(autoid=true)注意,eXtremeDB中的autoid并不需要单独的定义出一列表示,只需要在类级别定义即可。插入数据正常的使用insert方法插入即可,无需关注autoid。如果需要…

    2022年10月14日
  • html5教程单摆,Flash动画—单摆的制作教程

    html5教程单摆,Flash动画—单摆的制作教程想起当初作这个动画时,真是不知如何下手,所以,这是一篇献给初学者的教程的单摆动画的制作,应该要解决两个方面的问题:一、单摆本身的制作,这一点只要用好flash的绘图工具即可二、单摆振动,这一点将是教程的重点也是难点下面就先解决第一个问题,制作单摆(这一步的制作注意注册点的选择)首先要弄清,单摆有三部分组成:摆线、摆球、悬挂点(天花板)(一)、摆线:1、选取工具区的线条工具,线条粗细默认,在主场景按…

  • c++ 11 list转set「建议收藏」

    c++ 11 list转set「建议收藏」list<int> li; for(inti=0;i<100;i++){ li.push_back(i); } for(inti=0;i<100;i++){ li.push_back(i); } unordered_set<int> uset(li.begin(),li.end());//用list去初始化s…

  • 51单片机汇编学习例程(17)——KeyPad4X4篇[通俗易懂]

    51单片机汇编学习例程(17)——KeyPad4X4篇[通俗易懂]​ASM17_KeyPad4X4:矩阵键盘,LCD1602显示按键值。(注意代码显示不全,最下面有Keil源码和Proteus工程)/*********************************************************************************@fileKeyPad.asm*@authorAlex——小白*@versionV1.0*@date2019.9.1*@brie.

发表回复

您的电子邮箱地址不会被公开。

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