28.Mybatis的入门
目录
一、Mybatis的入门。
(1)Mybatis的简介。
(2)Mybatis的快速入门。
(2.1)快速入门。
(2.2)UserMapper.xml文件。
(2.3)sqlMapConfig.xml文件。
(2.4)测试类代码。
(3)MyBatis的映射文件概述。
(4)MyBatis的增删改查操作。
(4.1)查询操作。
(4.2)插入操作。
(4.3)修改操作。
(4.4)删除操作。
(4.5)增删改查映射配置知识小结。
一、Mybatis的入门。
(1)Mybatis的简介。
Mybatis是一个持久层框架。

(2)Mybatis的快速入门。
(2.1)快速入门。

(2.2)UserMapper.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="userMapper"><select id="findAll" resultType="domain.User">select * from user</select>
</mapper>
(2.3)sqlMapConfig.xml文件。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--数据源环境--><environments default="development"><!--默认使用下面id为development的环境--><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/test"/><property name="username" value="root"/><property name="password" value="tan"/></dataSource></environment></environments><!--加载映射文件--><mappers><mapper resource="mapper/UserMapper.xml"></mapper></mappers>
</configuration>
(2.4)测试类代码。
package test;
public class MyBatisTest {@Testpublic void test1() throws IOException {//1.获取核心配置文件InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");//2.获得session工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取session会话对象SqlSession sqlSession = sqlSessionFactory.openSession();//4.执行操作List<User> userList = sqlSession.selectList("userMapper.findAll");//5.打印数据System.out.println(userList);//6.释放资源sqlSession.close();}
}
(3)MyBatis的映射文件概述。

(4)MyBatis的增删改查操作。
(4.1)查询操作。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="userMapper"><!--1、查询操作--><select id="findAll" resultType="domain.User">select * from user</select><!--2、插入操作--><insert id="save" parameterType="domain.User">insert into user values (#{id},#{username},#{password})</insert><!--3、修改操作--><update id="update" parameterType="domain.User">update user set username=#{username},password=#{password} where id = #{id}</update><!--4、删除操作--><delete id="delete" parameterType="java.lang.Integer">delete from user where id = #{id}</delete>
</mapper>
@Test//查询操作public void test1() throws IOException {//1.获取核心配置文件InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");//2.获得session工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取session会话对象SqlSession sqlSession = sqlSessionFactory.openSession();//4.执行操作List<User> userList = sqlSession.selectList("userMapper.findAll");//5.打印数据System.out.println(userList);//6.释放资源sqlSession.close();}
(4.2)插入操作。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="userMapper"><!--2、插入操作--><insert id="save" parameterType="domain.User">insert into user values (#{id},#{username},#{password})</insert>
</mapper>
@Test//插入操作public void test2() throws IOException {//模拟user对象User user = new User();//user.setId(-1);//设置为0(不设置,默认为0)则自增,设置其他不自增(负数,整数,导致都不会自增)user.setUsername("asss");user.setPassword("abc");//1.获取核心配置文件InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");//2.获得session工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取session会话对象SqlSession sqlSession = sqlSessionFactory.openSession();//4.执行操作 参数:namespace+id(命名空间.id)sqlSession.insert("userMapper.save",user);//5.mybatis执行更新操作,提交事务sqlSession.commit();//6.释放资源sqlSession.close();}
(4.3)修改操作。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="userMapper"><!--3、修改操作--><update id="update" parameterType="domain.User">update user set username=#{username},password=#{password} where id = #{id}</update>
</mapper>
@Test//修改操作public void test3() throws IOException {//模拟user对象User user = new User();user.setId(-1);user.setUsername("lucy");user.setPassword("123");//1.获取核心配置文件InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");//2.获得session工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取session会话对象SqlSession sqlSession = sqlSessionFactory.openSession();//4.执行操作 参数:namespace+id(命名空间.id)sqlSession.update("userMapper.update",user);//5.mybatis执行更新操作,提交事务sqlSession.commit();//6.释放资源sqlSession.close();}
(4.4)删除操作。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="userMapper"><!--4、删除操作--><delete id="delete" parameterType="java.lang.Integer">delete from user where id = #{id}</delete>
</mapper>
@Test//删除操作public void test4() throws IOException {//1.获取核心配置文件InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");//2.获得session工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);//3.获取session会话对象SqlSession sqlSession = sqlSessionFactory.openSession();//4.执行操作 参数:namespace+id(命名空间.id)sqlSession.delete("userMapper.delete",8);//5.mybatis执行更新操作,提交事务sqlSession.commit();//6.释放资源sqlSession.close();}
(4.5)增删改查映射配置知识小结。

(5)待续......
相关文章:
28.Mybatis的入门
目录 一、Mybatis的入门。 (1)Mybatis的简介。 (2)Mybatis的快速入门。 (2.1)快速入门。 (2.2)UserMapper.xml文件。 (2.3)sqlMapConfig.xml文件。 …...
Android Jetpack 从使用到源码深耕【ViewModel从实践到原理 】(三)
上文,我们通过简单的ViewModel使用源码入手,对其源码进行阅读,原理进行了简单总结,简单来说,ViewModel是通过Activity的onRetainNonConfigurationInstance 与 getLastNonConfigurationInstance的自动调用,实现了 ViewModel数据的存储和恢复,数据存储在ViewModelStore的m…...
什么性格的人适合报考环境科学类专业?高考选专业
环境科学类专业包括有:环境科学与工程,环境工程,环境科学,环境生态工程,环保设备工程,资源环境科学,水质科学与技术。 环境对于未来是一个极其重要的方向,需要学生具备一定的科学素…...
Python中的异常处理机制可以帮助程序员在程序运行过程中遇到错误时进行处理
Python中的异常处理机制可以帮助程序员在程序运行过程中遇到错误时进行处理,防止程序崩溃或出现不可预测的错误。 Python中的异常处理使用try-except语句。try语句块包含可能会出现异常的代码,而except语句块则定义了出现异常时应该执行的操作。下面是一…...
TCP之报文格式解析
TCP网络协议是较常用的,也基本上都会接触,那么来简单了解下它吧。TCP 是一种面向连接的、可靠的传输协议,它能够将数据分成一些小块,并通过 Internet 进行传输。在 TCP 中,数据被分割成一些称为 TCP 报文段(…...
qemu-基础篇(二)——裸机 arm 程序环境搭建
文章目录 测试代码makefile运行 qemu调试 qemuGDB 常用命令 裸机篇系列文章主要用于熟悉 arm 汇编及处理器结构 测试代码 _start:ldr r0, 0X020C4068 /* CCGR0 */ldr r1, 0XFFFFFFFF str r1, [r0]ldr r0, 0X020C406C /* CCGR1 */str r1, [r0]ldr r0, 0X020C4070 …...
JSP+SQL基于JSP的学生信息管理系统(源代码+论文+答辩PPT)
随着学校规模的不断扩大,学生数量急剧增加,有关学生的各种信息也成倍增长。面对如此庞大的信息量,开发学生信息管理系统来提高学生管理工作的效率就成为必然。通过该系统,可以做到信息的规范管理、科学统计和快速查询,…...
docker上部署程序后无法连接数据库的问题
咱就是说,这个问题差点给我劝退docker。下面说下环境情况。 装了个javaweb程序容器,装了个数据库容器,javaweb容器就是链接不上数据库。 咱也是跟着菜鸟教程的容器互联步骤简历网络链接: 并且启动时增加--networkxxx 都加入到了…...
Ucore lab4
实验目的 了解内核线程创建/执行的管理过程了解内核线程的切换和基本调度过程 实验内容 练习一:分配并初始化一个进程控制块 1.内核线程及管理 内核线程是一种特殊的进程,内核线程与用户进程的区别有两个:内核线程只运行在内核态&#x…...
AI失业潮来袭,某些部门裁员过半
历史的车轮滚滚向前,每次生产力的大幅跃进,都会造成一批失业潮。想当年,纺纱机的出现让无数手工作坊的织布师傅失业。如今,在AI技术的催化下,同样的事正在互联网行业的各个领域重演。 疯狂的裁员浪潮 “AI15秒做的&am…...
git 撤销add/commit,以及更换源命令
前言:主要是为了自己方便记录,省的每次都查找一下这些命令 1、当我们只是想撤回commit,保留add .的时候,可以用下方代码 git reset --soft HEAD^ 2、当我们想撤回commit以及add .的时候,可以用下方代码 git reset…...
3dMax需要什么样的硬件环境才能更好的工作?
3dMax官方给出了系统要求的列表 ,可用于帮助确保系统中的硬件能够与他们的软件一起工作。但是,这个“系统要求”列表只涵盖了运行软件所需硬件的最基本知识,而不是实际提供最佳性能的硬件。由于这些列表的不一致程度,我们花时间进行测试以确定运行 3dMax 的最佳硬件。基于…...
python-使用Qchart总结4-绘制多层柱状图
1、上代码 import sysfrom PyQt5.QtChart import QChart, QChartView, QBarCategoryAxis, QValueAxis, QBarSeries, QBarSet from PyQt5.QtGui import QPainter, QColor from PyQt5.QtWidgets import QMainWindow, QApplicationfrom untitled import Ui_MainWindow #从生成好的…...
Java学习笔记-02
目录 流程控制语句 分支语句 循环语句 Random随机数 数组 方法 流程控制语句 分为顺序语句(从上到下,依次执行),分支语句(if,else...)和循环语句(for,while,do...while) 分支语句 分为if与switch两大类 单分…...
中通快递财报预测:中通快递2023年收入和利润将大幅下降
来源:猛兽财经 作者:猛兽财经 市场对中通快递2023年的预测 卖方虽然预测中通快递(ZTO)在2023年的表现会很不错,但他们也预计中通快递今年的财务业绩将不会像去年那样好。 根据S&P Capital IQ的数据,卖…...
Javaweb | 状态管理:Session、Cookie
💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 状态管理 问题引入 HTTP协议是无转态的,不能保存提交的信息如果用户发来一个新的请求,服务器无法知道它是否与上次的请求联系对于那些需要多次…...
Redux
Redux 作用 集中式管理react、vue、angular等应用中多个组件的状态,是一个库,不单单可用于react,只是更多的用于react中 模型图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AaFD3raR-1682994570670)(img/re…...
Nacos配置中心的详解与搭建
Namespace 简介 用于进行租户粒度的配置隔离,不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置 配置Namespace 点击nacos的命名空间——点击新建命名空间 开发环境【dev】测试环境【test】正式环境【prod】 DataID 简介 Data ID 通常用于…...
Java入门教程||Java 封装||Java 接口
Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码…...
微软开源AI修图工具让老照片重现生机
GitHub - microsoft/Bringing-Old-Photos-Back-to-Life: Bringing Old Photo Back to Life (CVPR 2020 oral) 支持划痕修复,以及模型训练。 Old Photo Restoration (Official PyTorch Implementation) Project Page | Paper (CVPR version) | Paper (Journal vers…...
Taotoken Token Plan套餐如何为高频用户节省大模型使用成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken Token Plan套餐如何为高频用户节省大模型使用成本 对于需要持续、大量调用大模型API的团队或个人开发者而言,…...
PowerShdll源码深度分析:从DLL导出到控制台劫持的完整实现原理
PowerShdll源码深度分析:从DLL导出到控制台劫持的完整实现原理 【免费下载链接】PowerShdll Run PowerShell with rundll32. Bypass software restrictions. 项目地址: https://gitcode.com/gh_mirrors/po/PowerShdll PowerShdll是一个创新的PowerShell绕过工…...
Taotoken多模型聚合平台在智能客服场景下的应用实践
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken多模型聚合平台在智能客服场景下的应用实践 对于智能客服系统的开发者而言,对话质量与成本控制是两大核心关切…...
Shell 相关基础入门,在 Ubuntu 与 CentOS Shell 中的语法差异总结(bash、dash、sh)
新建的test.sh文件,vim进去,每行开头都默认有一个~符号,是什么意思,而且在里面鼠标也失效了? 你问的这两个问题,恰好是初学者刚接触 vim 编辑器时最常遇到的两个困惑。它们完全正常,不是系统出错…...
为什么83%的用户误读NotebookLM引用溯源?一文讲透证据链完整性校验四步法
更多请点击: https://intelliparadigm.com 第一章:为什么83%的用户误读NotebookLM引用溯源?一文讲透证据链完整性校验四步法 NotebookLM 的“引用溯源”功能并非传统意义上的文献标注,而是一套基于语义锚点与片段置信度的轻量级证…...
编写程序统计职场上下级沟通频率,工作执行效果数据,搭建高效沟通模式,减少指令传达偏差工作失误。
构建一个职场上下级沟通频率与工作执行效果分析的商务智能示例项目,去营销化、中立化,仅用于学习与工程实践参考。一、实际应用场景描述在任何组织中,上下级沟通质量直接决定执行效率:- 上级布置任务 → 下级理解并执行 → 反馈结…...
ISO 11452-4 BCI测试补偿系数:从核心原理到工程校准的完整指南
1. 项目概述:从一次“诡异”的测试失败说起几年前,我接手了一个车载ECU的电磁兼容性摸底测试项目。按照标准流程,我们需要在电波暗室里,对样件进行ISO 11452-4标准规定的BCI(大电流注入)测试。测试计划、设…...
基于Arduino与GPS的物联网数据采集器:从硬件搭建到地图可视化
1. 项目概述:一个硬件极客的万圣节“寻宝图” 又到万圣节了,除了琢磨穿什么奇装异服,你是不是也在头疼怎么规划“不给糖就捣蛋”的路线?每年都像开盲盒,有的门口堆满南瓜灯的人家只给了一根棒棒糖,而某个其…...
你的边缘AI盒子为什么烫手?——散热设计的最后一道物理防线
🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 211、985硕士,从业16年 从事结构设计、热设计、售前、产品设计、项目管理等工作,涉足消费电子、新能源、医疗设备、制药信息化、核工业等…...
AI助手开发实战:从资源索引到生产级系统搭建指南
1. 项目概述:一个为AI助手开发者准备的“藏宝图” 如果你正在开发一个AI助手应用,或者正打算将大语言模型的能力集成到你的产品里,那你大概率会遇到一个经典难题:面对市面上眼花缭乱的模型、API和工具,我到底该怎么选&…...
