Mybatis常见查询总结,仅限于初级程序员阅读

news/2024/5/18 22:06:31/文章来源:https://blog.csdn.net/weixin_43388691/article/details/127211492

情况描述:

本人初次接触Mybatis,然后对于其中的一些基础查询做一些简单总结,一次用来记录他的用法,便于以后查漏补缺。

1、Mybatis中查询特定的列:(单列)

如果查询指定列为Long类型,那么在resultType中应该是:java.lang.Long,如果是其他类型的以此类推即可。

Mapper层:

//查询所有用户名List<String> queryListName();

xml层:

  <select id="queryListName" resultType="java.lang.String">select name from user2</select>

调用:

@Testpublic void getListName(){List<String> strings = userMapper.queryListName();strings.forEach(System.out::println);}

结果:
在这里插入图片描述
**

补充其实查询单列与查询单值是一个道理。只不过mapper层的方法的返回值是一个具体的数据类型,比如我们只查询查询用户id为4的用户名。

mapper层

String queryName();

xml层

  <select id="queryName" resultType="java.lang.String">select name from user2 where user_id = 4</select>

2、Mybatis中查询特定的列:(多列)

**

对于多列查询,这个时候就建议你,尽量将其封装到实体类中。

Mapper层:

//查询三列List<User2> queryListNameAndAge();

xml配置:

   <select id="queryListNameAndAge" resultType="com.swagger.swaggerdemo1.Pojo.User2">select id,name,create_time  from user2</select>

测试:

    @Testpublic void queryListNameAndAge(){List<User2> lists = userMapper.queryListNameAndAge();//升序排列List<String> name = lists.stream().sorted(Comparator.comparing(User2::getCreateTime)).map(user -> {return user.getName();}).collect(Collectors.toList());name.forEach(System.out::println);lists.forEach(System.out::println);}

在这里插入图片描述

**

3、Mybatis中一次查询多个集合(相当于一对多进行查询)

**

在这里 主要运用了两个关键标签:resultMap、collection
在这里插入图片描述
在这里插入图片描述
如果我们对collection的column传入多个参数问题:
在这里插入图片描述
举个例子:
(1)Pojo层:

package com.swagger.swaggerdemo1.Pojo;import io.swagger.models.auth.In;
import org.omg.PortableInterceptor.INACTIVE;import java.util.List;public class ToUser2 {public Integer id;public String name;public List<Integer> maths;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Integer> getMaths() {return maths;}public void setMaths(List<Integer> maths) {this.maths = maths;}@Overridepublic String toString() {return "ToUser2{" +"id=" + id +", name='" + name + '\'' +", maths=" + maths +'}';}
}

(2)Mapper层:

//查询指定集合List<ToUser2> queryGrades();

(3)xml层

<resultMap id="BaseDate" type="com.swagger.swaggerdemo1.Pojo.ToUser2"><id column="id" property="id"></id><collection property="maths" column="id" ofType="java.lang.Integer" select="queryMaths"></collection></resultMap><select id="queryMaths" resultType="java.lang.Integer">SELECT math FROM `grade` where user_id = #{id}</select><select id="queryGrades" resultMap="BaseDate">select * from user2</select>

(4)测试:

@Testpublic void queryCollection(){List<ToUser2> toUser2s = userMapper.queryGrades();toUser2s.forEach(System.out::println);}

在这里插入图片描述
**

4、Mybatis中进行关联查询(相当于一对一进行查询)

**
关联查询的核心的标签则是:association
在这里插入图片描述
在这里插入图片描述
举个例子:
(1)Pojo层:
学生表:

package com.swagger.swaggerdemo1.Pojo;import java.util.Date;public class User2 {private Integer id;private String name;private Date createTime;private Integer tid;private Teacher teacher;public Integer getTid() {return tid;}public void setTid(Integer tid) {this.tid = tid;}public Teacher getTeacher() {return teacher;}public void setTeacher(Teacher teacher) {this.teacher = teacher;}public Date getCreateTime() {return createTime;}public void setCreateTime(Date createTime) {this.createTime = createTime;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User2{" +"id=" + id +", name='" + name + '\'' +", createTime=" + createTime +", tid=" + tid +", teacher=" + teacher +'}';}
}

老师表:

package com.swagger.swaggerdemo1.Pojo;public class Teacher {private Integer id;private String name;private Integer age;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Teacher{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
}

(2)mapper层

//查询(association)List<User2> queryUserAndTeacher();

(3)xml层:

    <resultMap id="UserAndTeacher" type="com.swagger.swaggerdemo1.Pojo.User2"><association property="teacher" column="tid" select="queryTeacher"></association></resultMap><select id="queryTeacher" resultType="com.swagger.swaggerdemo1.Pojo.Teacher">select * from teacher where id = #{id}</select><select id="queryUserAndTeacher" resultMap="UserAndTeacher">select * from user2</select>

(4)测试层:

   @Testpublic void queryAssociation(){List<User2> user2s = userMapper.queryUserAndTeacher();user2s.forEach(System.out::println);}

测试结果:
在这里插入图片描述

总结:如果你是一个新手小白,其实只要你掌握这四种查询方式,基本上你已经差不多能成为一个可以进行增删改查的程序员了!当然,仅仅掌握这些是远远不够的,还需要掌握他的高阶用法!!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_20499.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏合作伙伴专题:BreederDAO 与 Affyn一起重构现实生活

BreederDAO 团队很宣布与 Affyn 建立了新的合作关系&#xff0c;Affyn 是一家位于新加坡的公司&#xff0c;开发了基于地理位置的增强现实移动游戏。 移动元宇宙 Affyn 团队由来自 EA、任天堂、迪士尼和星巴克等顶级游戏、娱乐和生活方式公司的资深员工组成。他们洞悉了目前边玩…

html5网页设计作业代码 大学生校园网站制作 学校官网制作html

&#x1f329;️ 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f482; 作者主页: 【进入主页—&#x1f680;获取更多源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;HTML5网页期末作业 (1000套…

性能大PK count(*)、count(1)和count(列)

最近的工作中&#xff0c;我听到组内两名研发同学在交流数据统计性能的时候&#xff0c;聊到了以下内容&#xff1a; 数据统计你怎么能用 count() 统计数据呢&#xff0c;count() 太慢了&#xff0c;要是把数据库搞垮了那不就完了么&#xff0c;赶紧改用 count(1)&#xff0c;这…

基于Gossip的online server

在游戏服务端架构中online server,有些也叫center server。 主要承载以下功能:存储玩家的在线信息,处理上线和下线消息。 转发消息给特定玩家。online server在架构图中的位置online server集群内部架构图,以3个实例为例:特点:svr之间相互连接,采用Gossip协议通信。 各s…

MCMS 审计之路

MCMS 是 J2EE 系统&#xff0c;完整开源的Java CMS&#xff0c;基于SpringBoot 2架构&#xff0c;前端基于vue、element ui。为开发者提供上百套免费模板,同时提供适用的插件&#xff08;文章、商城、微信、论坛、会员、评论、支付、积分、工作流、任务调度等...&#xff09;&a…

大学网课查题系统

大学网课查题系统 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击跳…

VB6开发 用户控件OCX

VB6 中创建一个主窗体工程后,再添加一个 ActiveX用户控件工程 在用户控件窗体中可以添加 文本框和按钮的控件 属性Public strUrl As String方法发送消息 Public Sub WebSocketSendMsg(ByVal SendMsg As String) On Error GoTo ErrTrapDim sMsg As StringsMsg = msgInput.TextC…

公众号网课答案系统搭建

公众号网课答案系统搭建 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;…

Java I/O流和反射机制

文章目录File类操作文件或目录属性认识Java的流使用字节流读写文本文件使用字节流类FileInputStream读文本文件使用字节流类FileOutputStream写文本文件使用字符流读写文本文件使用字符流类BufferedReader和FileReader读文本文件使用字符流类BufferedWrite和FileWrite写文本文件…

公众号订阅通知

洛塔服务号回复010获取代码。 功能说明 公众号订阅通知这个功能&#xff0c;微信本来打算替代掉模板消息和一次性订阅的&#xff0c;最后也没替代掉&#xff0c;成为单独的一个功能。 个人感觉和一次性订阅是没有太大区别的&#xff0c;只不过增加了一个长期订阅&#xff0c;…

2022测试工作太难找,怎样才能优先获得面试机会?

软件测试岗位前期门槛低&#xff0c;但是想要拿到高薪真没那么简单。工作 2-3 年薪资还在原地打转的同学&#xff0c;都大有人在。 根据我对招聘需求的研究&#xff0c;以及跟拿到高薪的同学交流发现&#xff0c;他们普遍被要求&#xff1a; 1、学历 在学历方面&#xff0c;…

SAP 顾问攻略笔记之寄售业务

寄售业务处理 供应商寄售&#xff08;Vendor Consignment&#xff09;是企业与供应商签订协议&#xff0c;要求供应商将货物送达企业仓库&#xff0c;由企业进行保管&#xff0c;并自由分配使用&#xff0c;此时不发生物权转移&#xff0c;企业实际消耗或者转为自有库存时&…

SQL抽象语法树及改写场景应用

1 背景 我们平时会写各种各样或简单或复杂的sql语句&#xff0c;提交后就会得到我们想要的结果集。比如sql语句&#xff0c;”select * from t_user where user_id > 10;”&#xff0c;意在从表t_user中筛选出user_id大于10的所有记录。你有没有想过从一条sql到一个结果集&…

Linux_Bash_Shell_索引数组和关联数组及稀疏数组

1. 索引数组一、什么是索引数组? 所谓索引数组就是普通数组,以整数作为数组元素的索引下标。二、实例。 备注: (a)使用-a选项定义索引数组,使用一对小括号()定义数组中的元素列表。 (b)索引数组使用整数作为数组元素下标。备注: (a)使用@和*作为数组下标,表示获取所有元素…

Abp项目(.net) 部署到服务端IIS 无法正常打开页面运行问题

1.当前项目使用abp开发&#xff0c;框架是.net6.0 版本。项目开发完毕后是按照正常流程发布。因此发布完成后根目录下面会有一个 .exe 后缀可执行的应用程序。 2. 如果直接点击.exe 应用程序&#xff0c;是能正常运行的输出。 3.但是部署到iis 上&#xff0c;就出现如下错误 …

2022华为杯D题问题一详细思路建模和程序

问题一思路 本问题的赛题总共包括两个子问题&#xff0c;需要同学们在满足上述数据依赖、控制依赖、以及各具体子问题的资源约束条件下进行资源排布&#xff0c;并充分考虑各子问题的优化目标&#xff0c;以求最大化芯片资源利用率。 问题1&#xff1a;给定资源约束条件如下&a…

远程桌面控制公司内网电脑修改PPT

微软的PowerPoint&#xff0c;相信是大家最熟悉的软件之一&#xff0c;其在我们工作中的重要性不言而喻。通常情况下&#xff0c;PPT做好后总会有各种各样的改动&#xff0c;如果恰逢自己没在办公室&#xff0c;而PPT又急需修改&#xff08;笔者就曾经碰到过这样尴尬的情况&…

Keras深度学习实战(29)——长短时记忆网络详解与实现

Keras深度学习实战&#xff08;29&#xff09;——长短时记忆网络详解与实现0. 前言1. RNN 的局限性2. LSTM 模型架构详解2.1 LSTM 架构2.2 LSTM 各组成部分与计算流程3. 从零开始实现 LSTM3.1 LSTM 模型实现3.2 验证输出小结系列链接0. 前言 长短时记忆网络 (Long Short Term…

【Linux】部署Jenkins(简介及详细教程【war包部署】)

文章目录Jenkins简介持续集成&#xff08;CI&#xff09;持续集成的效益持续集成的作用持续集成的特点持续交付&#xff08;CD&#xff09;持续部署&#xff08;CD&#xff09;Maven介绍部署Jenkins页面访问操作Jenkins简介 随着软件开发需求及复杂度的不断提高&#xff0c;团队…

34. count函数统计指定字符、元素出现的次数

34. count函数统计指定字符、元素出现的次数 文章目录34. count函数统计指定字符、元素出现的次数1. count 函数的作用2. count 函数语法3. 统计字符串中某个字符出现的次数4. 统计指定元素出现的次数5. 总结1. count 函数的作用 count [kaʊnt]&#xff1a;计数&#xff0c;计…