Mybatis查询一条数据

上一篇我们介绍了在pom文件中引入mybatis依赖,配置了mybatis配置文件,通过读取配置文件创建了会话工厂,使用会话工厂创建会话获取连接对象读取到了数据库的基本信息。

如果您需要对上面的内容进行了解,可以参考Mybatis引入与使用icon-default.png?t=N6B9https://blog.csdn.net/m1729339749/article/details/132457971

 本篇我们在上一篇的基础上了解如果使用mybatis查询数据:

一、准备数据

这里我们直接使用脚本初始化数据库中的数据

-- 如果数据库不存在则创建数据库
CREATE DATABASE IF NOT EXISTS demo DEFAULT CHARSET utf8;
-- 切换数据库
USE demo;
-- 创建用户表
CREATE TABLE IF NOT EXISTS T_USER(ID INT PRIMARY KEY,USERNAME VARCHAR(32) NOT NULL,AGE INT NOT NULL 
);
-- 插入用户数据
INSERT INTO T_USER(ID, USERNAME, AGE)
VALUES(1, '张三', 20),(2, '李四', 22),(3, '王五', 24);

创建了一个名称为demo的数据库;并在库里创建了名称为T_USER的用户表并向表中插入了数据

二、创建用户实体类

在cn.horse.demo2包下创建UserInfo实体类,为了方便打印用户的信息这里重写了ToString()方法

package cn.horse.demo2;public class UserInfo {private int id;private String username;private int age;@Overridepublic String toString() {StringBuilder result = new StringBuilder();result.append('[');result.append("id: " + this.id);result.append(", ");result.append("username: " + this.username);result.append(", ");result.append("age: " + this.age);result.append(']');return result.toString();}
}

三、配置Mapper文件

这里我在resources下创建了一个demo2的目录,并在目录下创建了一个UserInfoMapper.xml的配置文件。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="UserInfoMapper"><select id="findById" resultType="cn.horse.demo2.UserInfo">SELECT *FROM T_USERWHERE ID = #{id}</select>
</mapper>

namespace代表的是名称空间;如果有多个Mapper配置文件,名称空间不允许重复

select查询标签;

        id代表的是编号,同一个名称空间下编号不允许重复;

       resultType代表的是结果类型,指将数据库查询出来的数据转换成结果类型对象,转换的前提是结果类型需要提供无参数的构造方法(用于创建结果类型对象),数据库中的列需要与结果类型中的字段一一对应(使用反射的方式进行对象中字段的赋值),否则无法创建结果类型对象或者无法将数据绑定到结果类型对象的字段上。

        标签内容是SQL语句,代表使用ID查询用户信息,其中#{id}是参数;在执行当前查询语句时需要携带此参数。

四、引入Mapper配置

Mapper配置完成后,并没有生效;需要在mybatis-config.xml文件中配置完成后才能生效;

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="jdbc:mysql://${ip}:${port}/${database}?useUnicode=true&amp;useSSL=false&amp;characterEncoding=utf8"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="demo2/UserInfoMapper.xml" /></mappers>
</configuration>

其中mapper标签是我们引入的配置,resource用于指向Mapper配置文件的位置。

五、查询数据

// 读取mybatis配置文件
InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("mybatis-config.xml");
// 根据配置创建SqlSession工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = null;
try {// 创建SqlSessionsqlSession = sqlSessionFactory.openSession();// 根据用户编号查询一条用户信息UserInfo userInfo = sqlSession.selectOne("UserInfoMapper.findById", 2);System.out.println(userInfo);
} finally {// 关闭会话if(Objects.nonNull(sqlSession)) {sqlSession.close();}
}

代码中我们使用selectOne查询一条数据:

第一个参数代表的是语句,其实就是【名称空间.编号】,根据名称空间和编号可以找到我们在Mapper配置文件中配置的SQL语句

第二个参数代表的是参数值,用于解析SQL语句中的参数

执行上面代码的结果如下:

 查询的结果与我们库中的数据一致。

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

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

相关文章

Python爬虫(十五)_案例:使用bs4的爬虫

本章将从Python案例讲起&#xff1a;所使用bs4做一个简单的爬虫案例&#xff0c;更多内容请参考:Python学习指南 案例&#xff1a;使用BeautifulSoup的爬虫 我们已腾讯社招页面来做演示&#xff1a;http://hr.tencent.com/position.php?&start10#a 使用BeautifulSoup4解析…

Elasticsearch中的数据完全备份至另外的Elasticsearch

有两种方式实现&#xff1a; 1、快照和还原 2、导出和导入 一、快照和还原 1、在源Elasticsearch集群上创建快照存储库 PUT _snapshot/my_backup {"type": "fs","settings": {"location": "/path/to/backup/directory"}…

【前端】vue3 接入antdv表单校验

1/&#x1f355;背景 1、表单校验是非常常见的需求&#xff0c;能够有效的拦截大部分的错误数据&#xff0c;提升效率。 2、快速的给使用者提示和反馈&#xff0c;用户体验感非常好。 3、成熟的表单校验框架&#xff0c;开发效率高&#xff0c;bug少。 最近使用的是vue3antdv的…

[MyBatis系列④]核心配置文件

目录 1、简介 2、DTD 3、typeHandlers 3.1、默认类型处理器 3.2、自定义类型处理器 4、plugins ⭐MyBatis系列①&#xff1a;增删改查 ⭐MyBatis系列②&#xff1a;两种Dao开发方式 ⭐MyBatis系列③&#xff1a;动态SQL 1、简介 MyBatis的核心配置文件&#xff08;通常命…

基于IDEA使用maven创建hibernate项目

1、创建maven项目 2、导入hibernate需要的jar包 <!--hibernate核心依赖--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.4.1.Final</version></dependency><!--…

基于亚马逊云科技服务,构建大语言模型问答知识库

随着大语言模型效果明显提升&#xff0c;其相关的应用不断涌现呈现出越来越火爆的趋势。其中一种比较被广泛关注的技术路线是大语言模型&#xff08;LLM&#xff09;知识召回&#xff08;Knowledge Retrieval&#xff09;的方式&#xff0c;在私域知识问答方面可以很好的弥补通…

【Git】git clone --depth 1 浅克隆

问题 PycharmProjects git clone git Cloning into risk-package... remote: Counting objects: 576, done. error: pack-objects died of signal 947/574) error: git upload-pack: git-pack-objects died with error. fatal: git upload-pack: aborting due to possible r…

ARM64函数调用流程分析

ARM64函数调用流程分析 1 ARM64 函数调用实例2 对应代码的分析2.1 main函数及其对应的汇编程序2.1.1 main的C代码实现2.1.2 main函数对应汇编及其分析2.1.3 执行完成之后栈的存放情况 2.2 test_fun_a函数及其对应的汇编程序2.2.1 test_fun_a函数的C实现2.2.2 test_fun_a函数对应…

Oracle的学习心得和知识总结(二十八)|Oracle数据库数据库回放功能之论文二翻译及学习

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

MAC电脑外放没有声音解决方案

烦人呐&#xff0c;我的mac外接显示屏幕&#xff0c;显示器没有音频输出&#xff0c;需要mac笔记本的音频输出&#xff0c;但是经常打开后&#xff0c;mac没有声音输出&#xff0c;需要重启电脑才能生效。亲测一下方法有效&#xff0c;请参考&#xff1a; 文章目录 一、短期方案…

基于mha+mycat2+gtid的半同步主从复制双vip高可用MySQL集群

目录 项目名称 项目架构图 项目概述 项目准备 项目步骤 一、使用ansible编写palybook实现4台二进制安装MySQL环境的部署&#xff0c;并把master上的基础数据下发到所有slave服务器上 1. 建立免密通道 2.安装ansible在ansible服务器上&#xff0c;并写好主机清单 3.将…

汽车电子笔记之:AUTOSA架构下的OS概述

目录 1、实时操作系统&#xff08;RTOS&#xff09; 2、OSEK操作系统 2.1、OSEK概述 2.2、OSEK处理等级 2.3、OSEK任务符合类 2.4、OSEK优先级天花板模式 3、AUTOSAR OS 3.1、 AUTOSAR OS对OSEK OS的继承和扩展 3.2、AUTOSAR OS的调度表 3.3、AUTOSAR OS的时间保护 3…

冷冻冷藏自动化立体库|HEGERLS四向穿梭车助力打造冷链智能仓储新力量

随着中国仓储物流整体规模和低温产品消费需求的稳步增长&#xff0c;冷链市场应用潜力不断释放。而在实际运行中&#xff0c;由于冷库容量不足、基础设施落后、管理机制欠缺等原因&#xff0c;经常出现“断链”现象&#xff0c;严重威胁到产品质量和消费者安全。 河北沃克金属…

尚硅谷大数据项目《在线教育之离线数仓》笔记004

视频地址&#xff1a;尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第9章 数仓开发之DWD层 P049 P050 P051 P052 P053 P054 P055 P056 P057 P058 P059 P060 P061 P062 P063 P064 P065 P066 P067 P068 P069 P070 第9章 数仓开发之DWD…

Wlan——锐捷零漫游网络解决方案以及相关配置

目录 零漫游介绍 一代零漫游 二代单频率零漫游 二代双频率零漫游 锐捷零漫游方案总结 锐捷零漫游方案的配置 配置无线信号的信道 开启关闭5G零漫游 查看配置 零漫游介绍 普通的漫游和零漫游的区别 普通漫游 漫游是由一个AP到另一个AP或者一个射频卡到另一个射频卡的漫…

软考高级系统架构设计师系列论文九十八:论软件开发平台的选择与应用

软考高级系统架构设计师系列论文九十八:论软件开发平台的选择与应用 一、相关知识点二、摘要三、正文四、总结一、相关知识点 软考高级系统架构设计师系列之:面向构件的软件设计,构件平台与典型架构二、摘要 本文讨论选择新软件开发平台用于重新开发银行中间业务系统。银行中…

深入理解 Vue Router:构建可靠的前端路由系统

目录 01-什么是前端路由以及路由两种模式实现原理02-路由的基本搭建与嵌套路由模式03-动态路由模式与编程式路由模式04-命名路由与命名视图与路由元信息05-路由传递参数的多种方式及应用场景06-详解route对象与router对象07-路由守卫详解及应用场景 01-什么是前端路由以及路由两…

机器学习之SGD(Stochastic Gradient Descent,随机梯度下降)

SGD&#xff08;Stochastic Gradient Descent&#xff0c;随机梯度下降&#xff09;是深度学习中最基本的优化算法之一。它是一种迭代式的优化方法&#xff0c;用于训练神经网络和其他机器学习模型。以下是关于SGD优化器的重要信息&#xff1a; 基本原理&#xff1a;SGD的基本思…

java:Servlet

背景 我们访问浏览器访问一个地址&#xff0c;最终是访问到了这个 java 类&#xff0c;而 java 是运行在 Tomcat 上的&#xff0c;所以 Tomcat 作为一个服务器会把这个访问地址指向这个类中&#xff0c;这个类就是 Servlet&#xff0c;Servlet 就是一个具有一定规范的类&#x…

续:string的用法

续&#xff1a;string的用法 1、字符串插入2、c_str3、分隔后缀4、字符串转化为数值&#xff0c;或数值转化为字符串 1、字符串插入 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <assert.h> using namespace std;void…