使用mybatis -基本的增删改查
目录
项目准备
项目步骤
具体细节
1 主配置文件的处理
2 Test 测试类
3 在 loginMapper 接口中书写 对 数据库操作的方法
4 实体类 pojo 、entity 要和 数据库对应的表的字段 一一对应
5 在 loginMapper.xml 映射文件 书写 具体实现 loginMapper 接口中方法的sql 语句(重点)
查询用户登录信息(select)
单个查询
多个查询(集合存储)
插入 李四登录信息
修改李四 密码
删除 李四的登录信息
项目准备
1 清楚 mybatis是 持久层框架,主要用来 操作数据库,对数据库的存储的数据 进行增删改查 的操作
2 准备 mybatis 框架需要的基本依赖
- mysql-connector-java 数据库连接 依赖 和 mybatis 使用mybatis 框架所必须的依赖
<dependencies><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency></dependencies>
3 添加 项目需要的表 (tb_login)
项目步骤
1 使用maven 构建的项目
2 在 pom文件添加需要的依赖
3 添加 表信息
4 在主配置文件中,连接数据库,以及加载 映射文件需要的路径
5 在 mapper/dao层 接口 写 关于操作 数据库的方法
6 在 映射文件写具体关于如何操作数据库的sql 语句(重点)
7 测试类,测试结果,进行效果展示
具体细节
1 主配置文件的处理
加载配置文件 db.properties
- 关于与数据库连接的信息其中包括 数据库驱动,用户名,密码,url路径
<properties resource="db.properties"></properties>
配置连接环境
<environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED">
<!-- 配置数据源信息--><property name="driver" value="${driver}"></property><property name="url" value="${url}"></property><property name="username" value="${username}"></property><property name="password" value="${password}"></property></dataSource></environment></environments>
加载映射文件 loginMapper.xml
<mappers><mapper resource="mapper/loginMapper.xml"></mapper></mappers>
注意:这里的一切都是在主配置文件 <configuration>........</configuration>标签包围
2 Test 测试类
//获取mybatisConfig.xml 配置文件InputStream resource = Resources.getResourceAsStream("mybatisConfig.xml");//获取SqlSessionFactory对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resource);// 获取sqlsession 对象SqlSession sqlSession = sqlSessionFactory.openSession();
3 在 loginMapper 接口中书写 对 数据库操作的方法
package fs.mapper;import fs.entity.Login;import java.util.List;//操作数据库 的方法
public interface loginMapper {// 查询 所有用户的登录信息List<Login> getAllLogin();// 根据用户id 查询登录信息Login getLoginById(Integer id);// 插入 李四的登录信息int insertLogin(Login login);// 修改李四的登录 的密码int updateLogin(Login login);// 根据用户id 删除登录信息int deleteLoginById(Login login);
}
4 实体类 pojo 、entity 要和 数据库对应的表的字段 一一对应
package fs.entity;public class Login {private Integer id;private String password;private String username;public Login() {}public Login(String username, String password) {this.username = username;this.password = password;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}@Overridepublic String toString() {return "Login{" +"id=" + id +", password='" + password + '\'' +", username='" + username + '\'' +'}';}
}
5 在 loginMapper.xml 映射文件 书写 具体实现 loginMapper 接口中方法的sql 语句(重点)
前提: 以下这一切都是在 mapper 标签 内执行的,并且 一定要标注好 namespace
namespace 的值是 dao/mapper 持久层的接口 的具体位置 如
namespace="fs.mapper.loginMapper"
查询用户登录信息(select)
注意
1 parameterType 表示 传递参数 类型
2 resultType
- 输出简单类型
- 不管是输出的单个对象还是一个列表(list中包括对象),在mapper.xml中resultType指定的类型是一样的。都是对象类型
注意:
使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。
单个查询
<select id="getLoginById" parameterType="int" resultType="fs.entity.Login">select * from tb_login where id=#{id};</select>
Test 测试类 关于单个查询 的代码
Login login = sqlSession.selectOne("getLoginById", 1);System.out.println(login);
效果展示
多个查询(集合存储)
<select id="getAllLogin" resultType="fs.entity.Login">select * from tb_login;</select>
Test 测试类 关于多个查询(集合存储) 的代码
List<Login> list = sqlSession.selectList("getAllLogin");for (Login login : list) {System.out.println("id: "+login.getId()+"用户名: "+login.getUsername()+"密码: "+login.getPassword());}
效果展示
插入 李四登录信息
在 tb_login 表中 插入 李四登录信息
insert into tb_login(username, password) values ('admin','123456');
loginMapper.xml 映射文件
<insert id="insertLogin" parameterType="fs.entity.Login" >insert into tb_login(username,password) values(#{username},#{password});</insert>
Test 测试类 关于插入 李四登录信息 的代码
int insert = sqlSession.insert("insertLogin", new Login("admin", "123456"));sqlSession.commit();if (insert > 0){System.out.println("添加成功");}
效果展示
修改李四 密码
update tb_login set password='123';
loginMapper.xml 映射文件
<update id="updateLogin" parameterType="fs.entity.Login" > update tb_login set password=#{password} where username=#{username},;</update>
Test 测试类 关于修改李四 密码 的代码
int update = sqlSession.update("updateLogin", new Login("admin", "123"));// 提交事务sqlSession.commit();if (update > 0){System.out.println("修改成功");}
效果展示
删除 李四的登录信息
delete from tb_login where username='李四' and password='123';
loginMapper.xml 映射文件
<delete id="deleteLoginById" parameterType="fs.entity.Login" >delete from tb_login where username=#{username}and password=#{password};</delete>
Test 测试类 关于删除 李四的登录信息的代码
int delete = sqlSession.delete("deleteLoginById", new Login("admin", "123"));sqlSession.commit();if (delete > 0){System.out.println("删除成功");}
效果展示
相关文章:
使用mybatis -基本的增删改查
目录 项目准备 项目步骤 具体细节 1 主配置文件的处理 2 Test 测试类 3 在 loginMapper 接口中书写 对 数据库操作的方法 4 实体类 pojo 、entity 要和 数据库对应的表的字段 一一对应 5 在 loginMapper.xml 映射文件 书写 具体实现 loginMapper 接口中方法的sql 语句…...
通过API 调用本地部署 deepseek-r1 模型
如何本地部署 deepseek 请参考(windows 部署安装 大模型 DeepSeek-R1) 那么实际使用中需要开启API模式,这样可以无拘无束地通过API集成的方式,集成到各种第三方系统和应用当中。 上遍文章是基于Ollama框架运行了deepSeek R1模型…...
模型量化初始知识
背景 PyTorch对量化的支持目前有如下三种方式: Post Training Dynamic Quantization,模型训练完毕后的动态量化; Post Training Static Quantization,模型训练完毕后的静态量化; QAT(Quantization Aware T…...
成熟开发者需具备的能力
精业务 • 指深入理解和熟悉所开发软件的业务逻辑和需求。 • 开发者需要明确软件要解决的问题、面向的用户群体以及核心功能等。 • 精业务有助于开发者更好地设计系统架构、编写符合业务需求的代码,并能根据业务变化灵活调整开发计划。 懂原理 • 指掌握编程的基…...
java练习(32)
ps:题目来自力扣 环形链表 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表…...
linux配置网络安全服务图
系统安全防范: 1:用户与口令安全。避免使用脆弱口令,连续多次登录失败将禁止再次登录。 2:对象访问的安全性。对文件,目录和进程等对象的访问采用强制访问控制(MAC)来实现,不同的用…...
PTA:使用指针方式求一个给定的m×n矩阵各行元素之和
本题要求编写程序,使用指针方式求一个给定的mn矩阵各行元素之和。(例如:scanf("%d", *(matrix i) j); // 使用指针方式访问二维数组元素) 输入格式: 输入第一行给出两个正整数m和n(1<m<6, 1<n&…...
一.AI大模型开发-初识机器学习
机器学习基本概念 前言 本文主要介绍了深度学习基础,包括机器学习、深度学习的概念,机器学习的两种典型任务分类任务和回归任务,机器学习中的基础名词解释以及模型训练的基本流程等。 一.认识机器学习 1.人工智能和机器学习 人工智能&am…...
【DeepSeek服务器部署全攻略】Linux服务器部署DeepSeek R1模型、实现API调用、搭建Web页面以及专属知识库
DeepSeek R1模型的Linux服务器搭建、API访问及Web页面搭建 1,引言2,安装Ollama工具3,下载DeepSeek R1 模型4,DeepSeek命令行对话5,DeepSeek API接口远程调用6,DeepSeek结合Web-ui实现图形化界面远程访问6.1…...
利用多线程加速ESMC-6B模型API调用以及403Forbidden问题的解决
前言 只对之前这篇文章进行了补充 403 Forbidden问题的解决 这几天用了一下ESMC-6B的API,发现被403 forbidden了 排查问题查来查去,发现需要翻墙才可以访问(怎么又被针对了) 于是就需要在服务器上面接入VPN,想了想…...
zyNo.25
SSRF漏洞 在了解ssrf漏洞前先了解curl命令的使用 1.curl命令的使用 基本格式:curl<参数值>请求地址 get请求:curl http://127.0.0.1 post请求:curl -X POST -d "a1&b2" http://127.0.0.1/(其中,使用-X参…...
golang中数组和slice的区别及使用
来自于《go语言中文文档》的学习及自我分析 数组和切片的区别 golang中有两个很相似的数据结构:数组(Array)和slice。数组和slice实际有各自的优缺点和区别,这里列出最主要的区别 功能点数组slice概念是同一种数据类型的固定长…...
撕碎QT面具(7):container控件被spacer挤扁,无法进行控件添加的处理方案。
调节容器控件最小大小,然后把内部设计好后,对容器使用水平布局或垂直布局。这样容器的控件就不会被挤扁。...
2月19号
寒假每天敲代码的过程中,从先前的什么都不懂,在一步步看题解,学习新知识,运用学到的知识,解决问题,很多时候对数据结构和算法的选择有问题,不能准确选择,这个时候还是得多敲代码,就我自己而言,代码敲多了会让自己更熟练掌握这个知识点,也能更好的去运用,遇到相似的问题还可以举…...
EX_25/2/19
1. 封装一个 File 类,用有私有成员 File* fp 实现以下功能 File f "文件名" 要求打开该文件 f.write(string str) 要求将str数据写入文件中 string str f.read(int size) 从文件中读取最多size个字节,并将读取到的数据返回 析构函数 …...
纯新手教程:用llama.cpp本地部署DeepSeek蒸馏模型
0. 前言 llama.cpp是一个基于纯C/C实现的高性能大语言模型推理引擎,专为优化本地及云端部署而设计。其核心目标在于通过底层硬件加速和量化技术,实现在多样化硬件平台上的高效推理,同时保持低资源占用与易用性。 最近DeepSeek太火了&#x…...
ubuntu源码方式安装TensorRT-LLM推理框架
简要记录安装过程和遇到的问题 写在前面: 一切的二手安装教程都不如官方手册,建议先根据手册进行安装,遇到问题再自行谷歌: TensorRT官方文档 先安装docker TensorRT-LLM 官方推荐使用 Docker 进行构建和运行 ubuntu安装docker…...
集合 数据结构 泛型
文章目录 1.Collection集合1.1数组和集合的区别【理解】1.2集合类体系结构【理解】1.3Collection 集合概述和使用【应用】内部类匿名内部类Lambda表达式 1.4Collection集合的遍历【应用】1.5增强for循环【应用】 2.List集合2.1List集合的概述和特点【记忆】2.2List集合的特有方…...
python脚本文件设置进程优先级(在.py文件中实现)
在 Python 代码中可以直接通过 psutil 模块或 系统调用 来设置进程优先级,无需依赖终端命令。以下是具体方法和示例: 1. 使用 psutil 模块(跨平台推荐) psutil 是一个跨平台库,支持 Windows、Linux 和 macOS。通过其 …...
Docker 安装 Apache
Docker 安装 Apache 引言 Apache HTTP Server(简称Apache)是一个开源的HTTP服务器软件,广泛应用于各种操作系统和平台。Docker作为一种容器化技术,可以简化Apache的部署过程,使得其能够在任何环境中快速部署。本文将详细介绍如何在Docker容器中安装Apache。 准备工作 …...
实在智能与宇树科技、云深科技一同获评浙江省“人工智能服务商”、 “数智优品”等荣誉
近日,浙江省经信厅正式公布《2024 年浙江省人工智能应用场景、应用标杆企业、人工智能服务商及 “数智优品” 名单》。 实在智能获评浙江省“人工智能服务商”,核心产品 “实在 Agent 智能体” 入选 “数智优品”。一同获此殊荣的还有宇树科技、云深处科…...
C语言指针学习笔记
1. 指针的定义 指针(Pointer)是存储变量地址的变量。在C语言中,指针是一种非常重要的数据类型,通过指针可以直接访问和操作内存。 2. 指针的声明与初始化 2.1 指针声明 指针变量的声明格式为:数据类型 *指针变量名…...
管道的学习
进程间通信:是指在操作系统中,两个或多个独立的进程之间进行数据交换和信息共享的一种机制 进程间通信的本质:先让不同的进程先看到同一份资源,才有通信的条件 进程间通信的目的: 1.将一个进程的数据发送给另一个进程…...
迪威模型网:免费畅享 3D 打印盛宴,科技魅力与趣味创意并存
还在为寻找优质3D打印模型而发愁?快来迪威模型网(https://www.3dwhere.com/),一个集前沿科技与无限趣味于一体的免费3D打印宝藏平台! 踏入迪威模型网,仿佛开启一场未来科技之旅。其“3D打印”专区ÿ…...
Java运算符
- 算术运算符 - 正号 - - 负号 - 加号 - - 减号 - * 乘号 - / 除 - % 取余 - 自增(前) 先运算后取值 i; 自增(后) 先取值后运算 i; public cla…...
Kimi K1.5 与 DeepSeek R1:AI 模型的深度对比
文章目录 一、背景介绍二、核心功能对比三、K1.5 使用方法:四、总结 随着人工智能技术的飞速发展,大型语言模型在各个领域都展现出了巨大的潜力。Kimi K1.5 和 DeepSeek R1 作为当前备受关注的两款先进 AI 模型,各自拥有独特的功能和优势。本…...
mysql索引为什么用B+树不用,B树或者红黑树
MySQL 选择 B 树作为索引结构,而不是 B 树或红黑树,主要原因如下: 1. 磁盘 I/O 优化 B 树:节点存储更多键值,树的高度较低,减少了磁盘 I/O 次数,适合处理大规模数据。 B 树:虽然也…...
Redis 全方位解析:从入门到实战
引言 在当今互联网快速发展的时代,高并发、低延迟的应用场景越来越普遍。Redis,作为一款高性能的开源数据库,以其卓越的性能和灵活的功能,成为了许多开发者的首选工具。无论是在缓存、消息队列,还是在实时数据分析等领…...
无第三方依赖 go 语言工具库
- 开源地址 GitHub - zdhsoft/xmutilsgo: utils for go - 使用办法 go get github.com/zdhsoft/xmutilsgo 主要内容 int.go 定义泛型的整数类型和字符串转整数的函数和随机范围的函数isin.go 判断指定元素是否再数组中的函数page.go mysql用于分页的类ret.go 通用返回值的类…...
代码随想录算法【Day49】
Day49 42. 接雨水 思路 这道题利用单调栈进行横向求解。对于每一个元素,找到它右边第一个比它大的元素和左边第一个比它大(或者与它相等的元素,当然这种情况可以忽略),最后计算雨水的存储量:(…...
R-CNN
这是一个20004096的一个特征矩阵 05:44在这个特征矩阵当中呢 05:45每一行就是我们一个候选框 05:48通过CNN网络得到了一个特征向量 05:51然后它有2000候选框 05:53所以它一共有2000行 05:54然后中间这个就是我们所说的SVM权值矩阵 05:58它的每一列呢 05:59就对应着我们…...
Linux探秘坊-------5.git
1.git介绍 1.版本控制器 为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统&am…...
项目中分库分表的分布式ID如何生成
分库分表与分布式ID生成在Java项目中的应用 在大规模的分布式系统中,数据库表和数据量的增大可能会导致单个数据库或单个表的性能瓶颈。为了解决这个问题,我们通常使用分库分表来进行数据的水平切分和垂直切分。同时,在分布式环境中…...
SOME/IP--协议英文原文讲解8
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.2 Speci…...
JUC并发—7.AQS源码分析三
大纲 1.等待多线程完成的CountDownLatch介绍 2.CountDownLatch.await()方法源码 3.CountDownLatch.coutDown()方法源码 4.CountDownLatch总结 5.控制并发线程数的Semaphore介绍 6.Semaphore的令牌获取过程 7.Semaphore的令牌释放过程 8.同步屏障CyclicBarrier介绍 9.C…...
避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程
避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程 安装Anolis OS 8.9 下载AnolisOS-8.9-x86_64-dvd.iso并安装。 使用uname -a查看内核版本为5.10.134-18.an8.x86_64。 [rootlocalhost cloud-kernel]# c…...
基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)
基于知识图谱的问答系统:后端PythonFlask,数据库Neo4j,前端Vue3 引言 随着人工智能技术的不断发展,知识图谱作为一种结构化的知识表示方式,逐渐成为问答系统的重要组成部分。本文将介绍如何构建一个基于知识图谱的问答…...
日做力扣题2--215. 数组中的第K个最大元素
这道题我在做北京的一家教育公司的笔试时出现过,且题目里直接要求使用快排做,所以我也使用快排做的。 题目: 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最…...
centos8 使用yum安装程序出现报错
在执行yum指令出现源更新不了Could not resolve host: mirrorlist.centos.org; Unknown error问题 yum -y update结果 Errors during downloading metadata for repository appstream: - Curl error (6): Couldnt resolve host name for http://mirrorlist.centos…...
linux系统搭建DNS服务器、详细知识讲解
DNS服务器系统为rocky9.5, 1、安装DNS dnf -y install bind bind-utilsbind软件包 BIND 是一个开源的 DNS 服务器软件,广泛用于域名解析服务。 配置管理: 权威 DNS 服务器(Authoritative DNS):为特定域名…...
【部署优化篇四】《DeepSeek移动端优化:CoreML/TFLite实战对比》
手机里的AI助手能秒速回答你的问题,游戏人物能实时追踪你的表情变化,这些酷炫功能的背后都离不开移动端机器学习框架的支撑。今天我们就来撕开两个当红炸子鸡框架CoreML和TFLite的神秘面纱,看看它们在模型优化这件事上到底藏着哪些独门绝技。 一、移动端优化的生存法则 在…...
DeepSeek联网搜索
deepseek 0、前言1、未联网2、联网2.1 SerpAPI2.2 SerpAPIDeepseek 0、前言 为获取最新消息,需给deepseek联网 1、未联网 from dotenv import load_dotenv from langchain_deepseek import ChatDeepSeekload_dotenv()# 1、模型 model ChatDeepSeek(model"d…...
pt100 2线和3线的区别?
3线比2线更稳定一些; 在电路中,b和c是不连接在一起的; 测试的时候,b和c是接在一起的,也就是说pt100中b和c是连接在一起的 3线比2线多一个反馈; 平时测试的时候,测试一下ab或者ac 都是一样的…...
ollama-chat-ui-vue,一个可以用vue对接ollama的开源项目,可接入deepSeek
ollama-chat-ui-vue 使用vue3 vite elementUi 搭建的前端chat,通过ollama可与模型对话,目前支持独立思考,切换模型(联网查询后续支持) github地址:ollama-chat-ui-vue 制作不易github点点star,谢谢 前置工作 安装ollama,ollama官网地址 安装完olla…...
hot100-3、438、560、239、240、160、234(2简3中1难)
滑窗问题↓ 3. 无重复字符的最长子串(中等) 方法一、滑动窗口 数组结合哈希表ascii码,滑动出口。其实可以优化为left Math.max(left,map.get(s.charAt(i)) 1),数组的话就是全部初始化为-1,用来计算最新下标而不是…...
深入理解 Java 反射机制:获取类信息与动态操作
在 Java 编程中,反射(Reflection)是一种强大的机制,允许程序在运行时动态地获取类的信息并操作类的属性、方法和构造器。反射是 Java 动态语言特性的核心,广泛应用于框架开发、插件系统、序列化和反序列化等领域。本文…...
Redis 主从复制
概念 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他服务器,满⾜故障恢复和负载均衡等需求。Redis 也是如此,它提供了复制的功能,实现了相同数据的多个 Redis 副本,通过一个主节点(ma…...
Unity中NavMesh的使用 及其 导出给java服务端进行寻路
1.先添加 AI Navigation组件 2.Windows-->AI-->Navigation(Obsolete) 这样子就可以看到烘焙按钮 3.将物体标记为行走和不可行走 4.添加一个Plane和一些球体,并把需要形成NavMesh的物体选择为静态 // 因为只能烘焙静态的 之后可以看出烘焙后,看着被…...
【含文档+PPT+源码】基于微信小程序的猎兔汽车保养维修美容服务平台的设计与实现
项目介绍 本课程演示的是一款基于微信小程序的猎兔汽车保养维修美容服务平台的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部…...
iOS App的启动与优化
App的启动流程 App启动分为冷启动和热启动 冷启动:从0开始启动App热启动:App已经在内存中,但是后台还挂着,再次点击图标启动App。 一般对App启动的优化都是针对冷启动。 App冷启动可分为三个阶段: dyld:…...