[JAVA]有关MyBatis环境配置介绍

什么是MyBatis环境配置?

MyBatis是基于JDBC对数据库进行操作,在我们进行数据操作时,我们需要告诉MyBatis我们连接哪个数据库,ip地址,数据库名称,用户名密码等。以此来进行环境配置。

首先,MyBatis使用xml形式来保存了环境配置信息,在本章中描述配置的文件名叫mybatis-config-xml,在核心配置文件中:

  • MyBatis采用XML格式配置数据库环境信息
  • MyBatis环境配置标签<environment>
  • environment包含数据库驱动,URL,用户名和密码

                                                  mybatis-config.xml

<!--配置环境,不同的环境不同的id名字>
<environment id="dev"><!--采用JDBC方式对数据库事务进行commit/rollback--><transactionManager type ="JDBC"></transactionManager><!--采用连接池方式管理数据库连接--><dataSource type ="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/db"/><property name="usename" value="root"/><property name="possword" value="root"/></dataSource>
</environment>

通过这样的配置,告诉了MyBatis我们创建了一个环境名为dev,指向了本地3306的db数据库,用户名和密码为root,作为数据库的事务采用JDBC的方式进行提交和回滚,而所有的数据库连接被MyBatis使用数据库连接池进行有效的管理,我们在IDEA中代码演示如何使用此案例

配置MyBatis的前置工作,首先在pom.xml增加依赖

<dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.1</version></dependency>
</dependencies>

这里有个小问题,作为Maven来说,他的中央仓库是在国外服务器上,有时候下载比较困难,会导致无法正常下载,为了解决这个问题,我们可以在pom.xml中增加repositories仓库和repository标签,将下载的服务器指向国内阿里云镜像上

 <repositories><repository><id>aliyun</id><name>aliyun</name><url>https://maven.aliyun.com/repository/public</url></repository></repositories>

 将这个地址 加入以后,我们任何新产生的依赖都默认会从这个镜像仓库优先下载,如果镜像仓库没有的话,才从远程仓库下载,这样极大的提高了我们Maven的下载速度

因为我们用MySQL作为底层的数据库,MySQL的JDBC驱动我们需要对其引入

 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency>

此时查看IDEA左侧目录,可以看到上述pom.xml添加的两项依赖下载成功

f90c4c6754ab4bec92b1bf4ccb789bc3.png

把pom.xml写好以后,我们需要思考涉及到数据库的增删改查工作,我们就需要有对应的数据库和演示用的表才行,作为IDEA来说,它提供了一个便捷的工具可以直接作为MySQL客户端来使用

我们可以看到IDEA的右侧有Database标签,点击后会出现这个界面

 这个面板就是IDEA为我们内置的数据库客户端,我们点击+号,在下拉列表中找到Data Source数据源,右侧找到MySQL

15f0d0c7c60a447eaf5b08a32ba3d54a.png

在弹出的面板中 ,我们可以输入数据库连接的信息,输入用户名,密码等

1c7e99adc1964768be8f0041fc8cfed1.png

点击OK后,在原有的Database 面板中就会出现Localhost这个选项,展开后就发现我们对应的数据库,我们现在需要创建一个全新的数据库以及导入初始化的表

739e83f121bc48b499b96c57eed2bf96.png

 我们右键点击tables, 选择Run SQL Script..(代表运行SQL脚本),然后在我们源代码下找到准备好的sql脚本

14ad349a676b45d296d7c6a77af8e00b.png

运行这条SQL语句,短暂的等待后SQL脚本就被执行成功,同时在原有的数据库tables上增加了一条babytun的数据库,展开以后它有五张表

cf55f7a895f447cfb2bb5dc3f46b3212.png

双击查看t_goods_param表内容23c63ca045df4c6a994483ba38b6bf92.png

加入依赖和JDBC驱动,并且有了可演示的数据表后,我们就可以进入环境配置的阶段。

配置MyBatis

在resources目录下,我们要创建一个新的File文件,文件名命名为mybatis-config.xml

6b2d13bbc9a1426e88e3439575945e55.png

在这个xml文件中,我们首先要增加他的xml声明部分

<?xml version="1.0" encoding="UTF-8" ?>

其次我们要增加mybatis文档约束

<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Cogfig 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">

在configuration标签中写入环境配置

                                                  mybatis-config.xml

<configuration>//--设置默认指向的数据库<environments default="dev">//--配置环境,不同的环境不同的id名字<environment id="dev">//采用JDBC方式对数据库的事务进行commit/rollback管理<transactionManager type="JDBC "></transactionManager>//采用连接池方式管理数据库连接<dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/babytun?useUnicode=true&amp;characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments>
</configuration>

 以上是Mybatis配置环境的主要方法,另外我们还要学习基于数据库的环境来创建SqlSessionFactory来验证环境配置是否正确。 

那什么是SqlSessionFactory?

1.它是MyBatis框架中的一个核心工厂类,主要的作用是用于创建SqlSession对象。就像一个工厂,负责生产出可以用于操作数据库的“工具”(既SqlSession)

2.是MyBatis初始化工作的关键,本质上是加载配置文件来完成对于MyBatis的初始化。比如在MyBatis的配置文件(mybatis-config.xml)中,会定义数据库连接的相关参数(如数据库的URL,用户名,密码,数据库驱动等),还有映射文件(mapper.xml)的位置等信息,SqlSessionFactory会读取这些配置信息,解析它们,并根据这些配置来创建SqlSession对象

3.在我们平时使用时,SqlSessionFactory本质上是加载配置文件来完成对于MyBatis初始化工作,初次以外,数据库表的增删改查相关工作由SqlSession对象来完成

SqlSession对象有哪些特性呢?

1.SqlSession是MyBatis操作数据库的核心对象

在MyBatis框架中,SqlSession处于关键的位置,就像是一个连接MyBatis和数据库操作的桥梁。SqlSession使用JDBC方式与数据库交互

2.JDBC(Java Database Connectivity)是Java语言中用于连接数据库的标准接口。

SqlSession在底层是基于JDBC来实现与数据库的交互的,当我们通过SqlSession执行一个查询操作时,它实际上是在内部构建和执行JDBC的相关语句。比如,SqlSession会根据我们的配置和请求,准备好SQL语句,通过JDBC驱动建立与数据库的连接,将SQL语句发送到数据库服务器,然后获取数据库返回的结果。

3.SqlSession对象提供了数据表CRUD对应方法

CRUD是指数据库操作中的创建(Create),(读取Read),更新(Update)和删除(Delect)操作。

 下个文章我们将通过代码演示SqlSessionFactory和SqlSession是如何创建的!

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

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

相关文章

微搭低代码入门05循环

目录 1 for 循环2 while 循环3 do...while 循环4 break 语句5 循环展示组件总结 在编程中&#xff0c;循环是一种非常强大的控制结构&#xff0c;它允许我们重复执行一段代码直到满足某个条件为止。在微搭中&#xff0c;我们一般用循环来处理我们数据库返回的结果。 在微搭中&a…

11.13机器学习_线性回归

十 集成学习方法之随机森林 机器学习中有一种大类叫集成学习&#xff08;Ensemble Learning&#xff09;&#xff0c;集成学习的基本思想就是将多个分类器组合&#xff0c;从而实现一个预测效果更好的集成分类器。集成算法可以说从一方面验证了中国的一句老话&#xff1a;三个…

活动|华院计算作为联盟理事单位出席进博会全球人工智能合作论坛

第七届中国国际进口博览会&#xff08;进博会&#xff09;于11月5日至10日在上海举行&#xff0c;作为本次进博会的重要配套活动&#xff0c;首届人工智能全球合作论坛也于9日圆满落幕。本次论坛由全球招商中心委员会、人工智能全球合作论坛组委会主办&#xff0c;中国国际科技…

2、开发工具和环境搭建

万丈高楼平地起&#xff0c;学习C语言先从安装个软件工具开始吧。 1、C语言软件工具有两个作用 1、编辑器 -- 写代码的工具 2、编译器 -- 将代码翻译成机器代码0和1 接下来我们介绍两种C语言代码工具&#xff1a;devcpp 和 VS2019&#xff0c;大家可以根据自己的喜好安装。 dev…

【Qt实现虚拟键盘】

Qt实现虚拟键盘 &#x1f31f;项目分析&#x1f31f;实现方式&#x1f31f;开发流程 &#x1f31f;项目分析 需求&#xff1a;为Linux环境下提供可便捷使用的虚拟键盘OS环境&#xff1a;Windows 7/11、CentOS 7开发语言&#xff1a;Qt/C IDE&#xff1a;QtCreator 、Qt5.14.2功…

领夹麦克风哪个品牌好,手机领夹麦克风哪个牌子好,选购推荐

​无线麦克风凭借其无与伦比的便携性与灵活性&#xff0c;成为在演讲、表演以及会议等多种场合中不可或缺的有力帮手。它挣脱了线缆的束缚&#xff0c;使得声音的传播更加自由自在。其操作十分简便&#xff0c;只需简单配对就能投入使用&#xff0c;从而可以轻松地适应各类场景…

ADC输出码和输入电压转换关系

ADC输出码和输入电压转换关系 转换公式&#xff1a;ADC输出码(Vin / Vref) *2n 。其中Vin 是输入ADC芯片的电压&#xff0c;Vref是参考电压&#xff0c;n是ADC芯片的位数。 举个例子MS5182是一个16bit的ADC&#xff08;21665536&#xff09;&#xff0c;参考电压Vref4.096V&a…

IROS讲座:如何写出受欢迎的论文

讲座原名称&#xff1a;How to write papers people love reading 时间地点&#xff1a;2024年10月中旬&#xff0c;阿布扎比国家展览中心&#xff0c;阿联酋 演讲嘉宾照片&#xff1a; 以下是拍摄的部分PPT&#xff0c;并添加了中文笔记&#xff1a;

【Docker】Mac安装Docker Desktop导致磁盘剩余空间较少问题如何解决?

目录 一、背景描述 二、解决办法 三、清理效果 四、理论参考 解决方法 1. 清理未使用的 Docker 镜像、容器和卷 2. 查看 Docker 使用的磁盘空间 3. 调整 Docker 的存储位置 4. 增加磁盘空间 5. 调整 Docker Desktop 配置 6. 使用 Docker 清理工具&#xff08;例如 D…

Tiktok对接和内容发布申请流程

这段时间在搞AI生成视频&#xff0c;希望用户能一键发布到Tiktok&#xff0c;因此研究了一下Tiktok的开发者申请流程&#xff0c;发现好复杂&#xff0c;同时也发现Tiktok的开发也跟我一样&#xff0c;挺草台班子的 0、流程简述 废话不多说&#xff0c;Tiktok的开发者申请和…

Android ART知多少?

Android 虚拟机 ART&#xff08;Android Runtime&#xff09;是 Android 平台上的应用程序运行时环境&#xff0c;用于执行应用程序的字节码。ART 自 Android 5.0&#xff08;Lollipop&#xff09;开始取代了 Dalvik&#xff0c;成为 Android 的默认运行时环境。本文将从以下几…

黑马嵌入式开发入门模电基础学习笔记

学习视频: 黑马程序员嵌入式开发入门模电&#xff08;模拟电路&#xff09;基础 文章目录 背景介绍电流电压组件仿真三极管ne555PCBEDA案例&#xff1a;非接触式电笔案例&#xff1a;电子琴 背景介绍 电流 电压 组件 仿真 三极管 mos管 ne555 PCB EDA 案例&#xff1a;非接触…

Ubuntu 18 EDK2 环境编译

视频&#xff1a;在全新的Ubuntu上从零搭建UEFI的EDK2开发环境 开始&#xff1a;git clone https://github.com/tianocore/edk2.git 开始编译BaseTools前先更新一下子模块&#xff1a;git submodule update --init &#xff0c;然后&#xff1a;make -C BaseTools/ 问题1&a…

第9章 DIV+CSS布局

9.1 DIVCSS概述 DIVCSS是Web设计标准&#xff0c;它是一种网页的布局方法。与传统中通过表格&#xff08;table)布局定位的方式不同&#xff0c;它可以实现网页页面内容与表现相分离。DIV组成了网页的格局&#xff0c;CSS则装饰了格局&#xff0c;比如建一栋房子&#xff0c;…

QT QLineEdit失去焦点事件问题与解决

本文介绍如何获得QLineEdit的失去焦点事件和获得焦点的输入框也会触发失去焦点事件的问题&#xff01; 目录 一、QLineEdit获得失去焦点事件 1.自定义类继承自QLineEdit 2.重写 focusOutEvent 3.使用 二、失去焦点事件问题 1.问题描述 2.问题解决 三、源码分享 lineed…

微信小程序navigateTo:fail webview count limit exceed

theme: nico 你们好&#xff0c;我是金金金。 场景 uniapp编写微信小程序&#xff0c;使用uni.navigateTo跳转的过程中报错如下&#xff1a; 报错意思也非常明显了&#xff1a;errMsg":"navigateTo:fail webview 数量超出限制 排查 排查之前我先贴一下代码 代码非…

HarmonyOS ArkTs 解决流式传输编码问题

工作日志 日期&#xff1a;2024-11-15 标题&#xff1a;HarmonyOS ArkTs 解决流式传输编码问题 问题描述 问题&#xff1a;在处理流式数据的 HTTP 请求时&#xff0c;服务器返回的数据存在编码问题&#xff0c;导致数据无法正确地解码为字符串。部分数据在解码后出现了乱码…

Android Settings 单元测试 | 如何运行单元测试?

背景 在Android Settings 单元测试 | Telephony Network 模块 APN 案例中粗略介绍了单元测试逻辑内容&#xff0c;但是在独立APK里面如何将单元测试跑起来还是有疑问&#xff0c;因为APP不能直接install&#xff0c;无法借助Android Studio直接Run&#xff0c;在安装的一步会报…

flutter字体大小切换案例 小字体,标准字体,大字体,超大字体案例

flutter字体大小切换案例 小字体&#xff0c;标准字体&#xff0c;大字体&#xff0c;超大字体案例 Android iOS设备带有选择记录 我的flutter项目版本 environment: sdk: ‘>3.4.4 <4.0.0’ 图片案例 pubspec.yaml 添加依赖 # 屏幕尺寸适配 https://github.com/OpenF…

编译原理(手绘)

大家好&#xff0c;今天给大家分享一下我自己对c语言编译链接的一点见解&#xff08;本人是学生&#xff0c;有记笔记的习惯&#xff09;&#xff0c;那么今天就给大家分享我的笔记。 以上只是我本人的一些见解&#xff0c;并非绝对&#xff0c;欢迎大家一起交流。 那么今天分…