当前位置: 首页 > news >正文

【2023.11.24】Mybatis基本连接语法学习➹

基本配置

1.如果使用Maven管理项目,需要在pom.xml中配置依赖。

2.安装Mybatis-3.5.7.jar包

3.进行XML配置:这里将文件命名为mybatis-config.xml

配置数据库连接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="${驱动类(含包名)}"/><property name="url" value="${数据库连接URL}"/><property name="username" value="${用户名}"/><property name="password" value="${密码}"/></dataSource></environment></environments><mappers><mapper url = "file:src/com/test/mapper/TestMapper.xml"/><!--    存放映射器XML文件   --></mappers></configuration>

其中mappers标签内存放XML映射器文件

编写Java主函数

package com.test;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.FileInputStream;
import java.io.FileNotFoundException;public class Main {public static void main(String[] args) throws FileNotFoundException {SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("src/mybatis-config.xml"));try (SqlSession sqlSession = sqlSessionFactory.openSession(true)){System.out.println(sqlSession.selectList("getArtist"));//括号内填写SQL映射语句的id}}
}

1.从 XML 中构建 SqlSessionFactory

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得,创建SqlSessionFactory时会调用xml配置文件。

2.从 SqlSessionFactory 中获取 SqlSession

我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。

你可以通过 SqlSession 实例来执行已映射的 SQL 语句。SQL语句的映射需要编写映射器XML文件

编写映射器(mapper)的XML文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="src/com/test/mapper/TestMapper.xml"><!--区分不同映射器--><!--条件查询--><select id="getArtist" resultType="String">select aName from artist<!--填写SQL语句,里面的变量都是数据库的表名和字段名--></select>
</mapper>

注:若xml配置文件中出现找不到映射器文件的情况,注意配置文件中mapper标签内的映射器引用格式。


接口函数

编写映射器接口:

package com.test.mapper;import com.test.artist;import java.util.List;public interface TestMapperInterface {List<artist> selectArtist();artist getArtistById(int a);int addArtist(artist newArtist);int deleteArtist(int d);
}

要让映射器关联上映射器接口,只需要修改映射器的namespace为接口地址:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.mapper.TestMapperInterface"><resultMap id="test" type="com.test.artist"><result column="aID" property="aID"/></resultMap><select id="selectArtist" resultMap="test">select * from artist</select><!--条件查询--><select id="getArtistById" resultMap="test">select * from artist where aID = #{a}<!--接口形参名--></select><!--插入操作--><insert id="addArtist">insert into artist(aID,aName,asex) values (#{aID},#{aName},#{asex})</insert><!--删除操作--><delete id="deleteArtist" parameterType="com.test.artist">delete from artist where aID = #{d}</delete></mapper>

接口中的方法会自动对应上映射器中的SQL执行语句id

修改配置文件中的mapper路径:

<mapper resource = "com/test/mapper/TestMapper.xml"/>
因为接口的命名空间通常是在类路径下的某个位置,所以这里要将URL改成 resource

主函数调用映射器接口:

package com.test;import com.test.mapper.TestMapperInterface;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.FileInputStream;
import java.io.FileNotFoundException;public class Main {public static void main(String[] args) throws FileNotFoundException {SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("src/mybatis-config.xml"));try (SqlSession sqlSession = sqlSessionFactory.openSession(true)){TestMapperInterface mapper = sqlSession.getMapper(TestMapperInterface.class);mapper.selectArtist().forEach(System.out::println);System.out.println("\n");System.out.println(mapper.getArtistById(2089));}}
}

MyBatis与JDBC的差异

JDBC和Mybatis优缺点对比
JDBCMybatis
DriverManager驱动类连接数据库,java代码与数据库耦合

配置xml文件中连接数据库,使得java代码与数据库分离

Statement对象中执行SQL语句,java代码与SQL语句耦合映射器的xml文件中执行SQL语句,使得java代码与SQL语句分离
ResultSet对象中接收SQL语句结果,每条结果需要指针遍历。直接通过SqlSession中的方法接收SQL语句结果,结果是一个集合

综上,相比于JDBC所有功能都在java代码中执行,Mybatis尽管结构更加复杂,但每个文件负责不同的功能,更加便于管理。

相关文章:

【2023.11.24】Mybatis基本连接语法学习➹

基本配置 1.如果使用Maven管理项目&#xff0c;需要在pom.xml中配置依赖。 2.安装Mybatis-3.5.7.jar包 3.进行XML配置&#xff1a;这里将文件命名为mybatis-config.xml 配置数据库连接XML文件 <?xml version"1.0" encoding"UTF-8" ?> <!DO…...

如何防止网络被入侵?

随着互联网的普及&#xff0c;网络安全问题越来越受到人们的关注。其中&#xff0c;如何防止网络被入侵是一个重要的问题。本文将介绍一些防止网络被入侵的方法&#xff0c;帮助大家保护自己的网络安全。 一、使用强密码 强密码是防止网络被入侵的第一道防线。一个好的密码应该…...

【Linux】常见指令及周边知识(一)

【Linux】常见指令及周边知识&#xff08;一&#xff09; 一、初始Linux操作系统1.Linux背景2.如何使用Linux 二、学习Linux之前的预备周边知识&#xff08;重点&#xff09;&#xff1a;1.什么叫做文件&#xff1f;2. Linux下的路径分隔符3.在Linux中为什么会存在路径&#xf…...

【Docker】从零开始:6.配置镜像加速器

【Docker】从零开始&#xff1a;5.配置镜像加速器 什么是镜像加速器&#xff1f;为什么要配置docker镜像加速器?常见的Docker镜像加速器有哪些&#xff1f;如何申请Docker镜像加速器如何配置Docker镜像加速器 什么是镜像加速器&#xff1f; 镜像加速器是一个位于Docker Hub之…...

The Bridge:从临床数据到临床应用(预测模型总结)

The Bridge:从临床数据到临床应用&#xff08;预测模型总结&#xff09; 如果说把临床预测模型比作临床数据和临床应用之间的一座“桥梁”&#xff0c;那它应该包括这样几个环节&#xff1a;模型的构建和评价、模型的概率矫正、模型决策阈值的确定和模型的局部再评价。 模型的构…...

[极客大挑战 2019]Secret File1

[极客大挑战 2019]Secret File1 在bp里面发现secr3t.php 将secr3t.php 直接加在网站后面&#xff0c;发现了有关flag的信息&#xff0c;一个flag.php文件 在遇到flag.php时候&#xff0c;联想到php伪协议&#xff0c;构造伪协议方式 secr3t.php?filephp://filter/readconver…...

如何评估一个论坛或峰会值不值得参加?

现在的论坛和峰会非常多&#xff0c;且都宣传的非常高端&#xff0c;很多人为了不错过机会像赶场一样总在参会路上。但究竟什么样的论坛或峰会才值得一去呢&#xff1f; 评估一个论坛或峰会是否值得参加&#xff0c;需要考虑多个因素。 1、主题与你的兴趣或职业相关性&#xf…...

04_使用API_日期和时间

JDK 8 之前传统的日期、时间 Date 类 代表的是日期和时间 import java.util.Date;public class Test {public static void main(String[] args) {// 1. 创建一个Data对象&#xff0c;代表系统当前时间信息的Date d new Date();System.out.println(d); // 输出的是日期与当…...

手动实现 git 的 git diff 功能

这是 git diff 后的效果&#xff0c;感觉挺简单的&#xff0c;不就是 比较新旧版本&#xff0c;新增了就用 "" 显示新加一行&#xff0c;删除了就用 "-" 显示删除一行&#xff0c;修改了一行就用 "-"、"" 显示将旧版本中的该行干掉了并…...

RabbitMQ之MQ的可靠性

文章目录 前言一、数据持久化交换机持久化队列持久化消息持久化 二、LazyQueue控制台配置Lazy模式代码配置Lazy模式更新已有队列为lazy模式 总结 前言 消息到达MQ以后&#xff0c;如果MQ不能及时保存&#xff0c;也会导致消息丢失&#xff0c;所以MQ的可靠性也非常重要。 一、…...

Navicat 技术指引 | 适用于 GaussDB 的查询编辑器

Navicat Premium&#xff08;16.2.8 Windows版或以上&#xff09; 已支持对 GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结构同步、协同合作、数据迁移等&#xff09;&#xff0c;这…...

Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署

JenkinsMavenGitlabTomcat 自动化构建打包、部署 1、环境需求 本帖针对的是Linux环境&#xff0c;Windows或其他系统也可借鉴。具体只讲述Jenkins配置以及整个流程的实现。 1.JDK&#xff08;或JRE&#xff09;及Java环境变量配置&#xff0c;我用的是JDK1.8.0_144&#xff0…...

(2023码蹄杯)省赛(初赛)第三场真题(原题)(题解+AC代码)

题目1&#xff1a;MC0227堆煤球 码题集OJ-堆煤球 (matiji.net) 思路&#xff1a; 1.i从l枚举到r,i是8的倍数就跳过&#xff0c;i不是8的倍数就用等差数列求和公式i(1i)/2,最后累加到答案中即可 AC_Code:C #include<bits/stdc.h> using namespace std;int main( ) {in…...

第十二章 : Spring Boot 日志框架详解

第十二章 : Spring Boot 日志框架详解 前言 本章知识重点:介绍了日志诞生背景,4种日志框架:Logback、Log4j、Log4j2和Slf4j的优劣势分析,以及重点介绍了log4j2的应用示例以及配置,以及日志框架应用中遇到常见的问题以及如何处理。 背景 Java日志框架的发展历程可以追…...

STM32 -Bin/Hex文件格式解析

文章目录 1. 概述2. Hex文件2.1 格式解析2.2 数据类型2.3 举例解析2.4 合并两个Hex文件方法 3. Bin文件3.1 生成方式3.2 合并多个Bin文件方法3.3 打开Bin文件方式3.4 和Hex文件比较 4 总结 1. 概述 Hex文件&#xff1a;它是单片机和嵌入式工程编译输出的一种常见的目标文件格式…...

【Java 进阶篇】Redis:打开缓存之门

介绍 Redis&#xff08;Remote Dictionary Server&#xff09;是一个高性能的键值对存储系统&#xff0c;被广泛用作缓存、消息中间件和数据库。它以其快速的读写能力、支持多种数据结构和丰富的功能而闻名。在这篇博客中&#xff0c;我们将深入了解Redis的概念、安装以及基本…...

Python与设计模式--享元模式

10-Python与设计模式–享元模式 一、网上咖啡选购平台 假设有一个网上咖啡选购平台&#xff0c;客户可以在该平台上下订单订购咖啡&#xff0c;平台会根据用户位置进行 线下配送。假设其咖啡对象构造如下&#xff1a; class Coffee:name price 0def __init__(self,name):se…...

亚马逊云科技向量数据库助力生成式AI成功落地实践探秘(二)

向量数据库选择哪种近似搜索算法&#xff0c;选择合适的集群规模以及集群设置调优对于知识库的读写性能也十分关键&#xff0c;主要需要考虑以下几个方面&#xff1a; 向量数据库算法选择 在 OpenSearch 里&#xff0c;提供了两种 k-NN 的算法&#xff1a;HNSW (Hierarchical…...

怎么当代课老师教学生

老师朋友们&#xff0c;有没有帮忙当过代课老师呢&#xff1f;或者&#xff0c;没当过的老师是不是对这种职业充满了好奇&#xff1f;让我来分享一下&#xff0c;当代课老师的日常是什么样的吧&#xff01; 备课 说起备课&#xff0c;那可是个大工程&#xff01;不过&#xff…...

『 MySQL数据库 』表的增删查改(CRUD)之表的数据插入及基本查询

文章目录 &#x1f4c2; Create(创建/新增)&#x1f4cc;全列插入与指定列插入&#x1f4cc;&#x1f4cc;单行数据插入与多行数据插入&#x1f4cc;&#x1f4cc;插入数据否则更新&#x1f4cc;&#x1f4cc;数据的替换&#x1f4cc; &#x1f4c2; Retrieve(查询)&#x1f4c…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...