【MyBatis进阶】mybatis-config.xml分析以及try-catch新用法

 目录

尝试在mybatis项目中书写增删改查

遇见问题:使用mybaties向数据库中插入数据,idea显示插入成功,但是数据库中并没有数据变化?

MyBatis核心配置文件剖析

细节剖析:

try-catch新用法


截至目前我的项目存在的问题,Mapper.xml文件中的SQL语句任然是死的,

这里还有一个问题就是。假如表结构的列名和你设计的pojo中的列名虽然能够对应上但是名字不一样,比如大小写或者多个符号等等,这种情况咋办?我们在书写sql语句时,学习过给列名取别名的方法,上述情况可以使用取别名的方式来解决;

尝试在mybatis项目中书写增删改查

遇见问题:使用mybaties向数据库中插入数据,idea显示插入成功,但是数据库中并没有数据变化?

可能的原因有几种:

  1. 没有提交事务:在使用 MyBatis 进行数据库操作时,需要手动提交事务。你可以在插入数据完成后调用 commit() 方法来提交事务。如果没有提交事务,数据库中的数据不会被实际保存。

  2. 配置问题:请确保你的数据库连接配置正确,并且连接到了正确的数据库。可以检查配置文件中的数据库URL、用户名和密码等信息是否正确。

  3. SQL语句错误:请检查你的插入语句是否正确。可能存在语法错误或者数据类型不匹配等问题导致插入失败。可以尝试手动执行相同的 SQL 语句来验证。

  4. 数据库自动提交设置:有些数据库默认情况下是自动提交的,即每次执行 SQL 语句后会自动将修改保存到数据库。如果你的数据库是自动提交模式,可能是其他代码修改了数据后没有及时提交导致看不到变化。

  5. 数据库事务隔离级别:如果你在启用了事务的情况下进行插入操作,可能是由于事务隔离级别导致的。可以尝试将事务隔离级别设置为 READ_COMMITTED,或者禁用事务来验证是否能够正常插入数据。

MyBatis核心配置文件剖析

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><!--  加载类路径下的属性配置文件   --><properties  resource="db.properties"/><!-- 默认使用的环境 ID(比如:default="development")也就是说我们可以配置多套<environment>环境,其中default是默认环境,也就是不同的数据库,不同的数据库配置不同的环境我们可以在environments中配置多个环境,--><environments default="development"><!--每个 environment 元素定义的环境 ID--><environment id="development"><!--transactionManager 事务管理器type的值有JDBC和MANAGEDJDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域,也就是给我们来手动管理事务的提交。--><transactionManager type="JDBC"/><!--dataSourcedataSource 数据源 dbcp c3p0 druidtype="[UNPOOLED|POOLED|JNDI]"POOLED意思有连接池的连接UNPOOLED意思没有连接池的连接--><dataSource type="POOLED"><!--                JDBC 驱动--><property name="driver" value="${mysql.driver}"/><!--                url数据库的 JDBC URL地址。--><property name="url" value="${mysql.url}"/><property name="username" value="${mysql.username}"/><property name="password" value="${mysql.password}"/>​<!--            defaultTransactionIsolationLevel – 默认的连接事务隔离级别。&ndash;&gt;--><!--            <property name="defaultTransactionIsolationLevel" value=""/>-->​<!--            defaultNetworkTimeout – 等待数据库操作完成的默认网络超时时间(单位:毫秒)&ndash;&gt;--><!--            <property name="efaultNetworkTimeout" value=""/>-->​</dataSource></environment></environments>​<mappers><!-- 使用相对于类路径的资源引用 --><mapper resource="mapper/UserMapper.xml"/><!-- 使用完全限定资源定位符(URL)不推荐使用<mapper url="E:\JetBrains\mybatis学习\Mybatis-study\Mybatis-03\src\main\java\asia\xiaojiang\mybatis03\dao\UserMapper.xml"/>-->​<!-- 使用映射器接口实现类的完全限定类名使用注意点:接口和其配置文件必须同名, 必须在同一个包下--><!--        <mapper class="asia.xiaojiang.mybatis03.dao.UserMapper"/>--><!-- 将包内的映射器接口实现全部注册为映射器使用包扫描注意点:接口和其配置文件必须同名, 必须在同一个包下--><!--        <package name="asia.xiaojiang.mybatis03.dao"/>--></mappers>​</configuration>

细节剖析:

 <environments default="development">

     默认使用的环境 ID(比如:default="development")也就是说我们可以配置多套<environment>环境,其中default是默认环境,这里的环境我们如何理解,数据库中的一个数据库对应一个环境,那么不同的环境也就是不同的数据库,不同的数据库配置不同的环境,我们可以在environments中配置多个环境,然后指定一个default默认环境;

    那么这个环境在那里使用呢?,我们在创建sqlSessionFactory对象时,会遇见下图的情况,也就是参数中除了reader流,还会有一个environment参数,这里的environment就是指定数据库也就是指定环境,此时我们就可以得到一个环境或者一个数据库对应一个sqlSessionFactory对象;他的build方法还有只有一个reader流参数的重载方法;,使用这个方法时,就采用的是默认的环境;当然你也可以指定;

    default的值是什么,这里的值就是下面不同环境的id值。不同环境会有一个不同id;

  <transactionManager type="JDBC"/>

transactionManager 事务管理器, type的值有JDBC和MANAGED

  1. JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域,也就是给我们来手动管理事务的提交。

  2. MANAGED —这个配置的意思是,将事务的管理交给其他,如即将要学的spring等等

<--
dataSourcedataSource 数据源 dbcp c3p0 druid
type="[UNPOOLED|POOLED|JNDI]"
POOLED意思有连接池的连接
UNPOOLED意思没有连接池的连接-->
<dataSource type="POOLED">
<!--                JDBC 驱动-->
<property name="driver" value="${mysql.driver}"/>
<!--                url数据库的 JDBC URL地址。-->
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>​
<!--  defaultTransactionIsolationLevel – 默认的连接事务隔离级别。&ndash;&gt;-->
<!--  <property name="defaultTransactionIsolationLevel" value=""/>-->​
<!--  defaultNetworkTimeout – 等待数据库操作完成的默认网络超时时间(单位:毫秒)&ndash;&gt;-->
<!--  <property name="efaultNetworkTimeout" value=""/>-->​
</dataSource>

datasource是数据源,什么是数据源呢?这里的数据源不是数据的源头,而是提供connection连接的对象,例如数据库连接池就叫做数据源;

try-catch新用法

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

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

相关文章

短视频矩阵系统/pc、小程序版独立原发源码开发搭建上线

短视频剪辑矩阵系统开发源码----源头搭建 矩阵系统源码主要有三种框架&#xff1a;Spring、Struts和Hibernate。Spring框架是一个全栈式的Java应用程序开发框架&#xff0c;提供了IOC容器、AOP、事务管理等功能。Struts框架是一个MVC架构的Web应用程序框架&#xff0c;用于将数…

使用Apache和内网穿透实现私有服务公网远程访问——“cpolar内网穿透”

文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…

Maven安装教程

目录 不喜欢废话&#xff0c;直接上教程&#xff01; 第一步&#xff1a;下载maven 第二步&#xff1a;环境配置 第三步&#xff1a;配置maven 配置maven包括配置本地仓库的位置&#xff0c;配置镜像&#xff0c;配置JDK&#xff0c;都在settings.xml里面配置 配置本地仓…

UI自动化测试的痛点

当我们找工作的时候查看招聘信息发现都需要有自动化测试经验&#xff0c;由此看来测试人员不会一点自动化测试技术都不好意思说自己是做软件测试的。大部分测试人员也都是从使用自动化测试工具、录制回放、测试脚本、开发小工具入门自动化测试的&#xff0c;然后在慢慢的接触 U…

深入探究音视频开源库 WebRTC 中 NetEQ 音频抗网络延时与抗丢包的实现机制

目录 1、引言 2、什么是NetEQ&#xff1f; 3、NetEQ技术详解 3.1、NetEQ概述 3.2、抖动消除技术 3.3、丢包补偿技术 3.4、NetEQ概要设计 3.5、NetEQ的命令机制 3.6、NetEQ的播放机制 3.7、MCU的控制机制 3.8、DSP的算法处理 3.9、DSP算法的模拟测试 4、NetEQ源文件…

dubbo-admin安装

一、dubbo-admin安装 1、环境准备 dubbo-admin 是一个前后端分离的项目。前端使用vue&#xff0c;后端使用springboot&#xff0c;安装 dubbo-admin 其实就是部署该项目。我们将dubbo-admin安装到开发环境上。要保证开发环境有jdk&#xff0c;maven&#xff0c;nodejs 安装no…

GaussDB for openGauss部署形态

前言 华为云数据库GaussDB是华为自主创新研发的分布式关系型数据库&#xff0c;具有高性能、高可用、高安全、低成本的特点&#xff0c;本文带你详细了解GaussDB数据库的部署形态。 1、GaussDB部署形态三种类型 GaussDB部署形态&#xff1a;单机 独立部署是将数据库组件部署…

VS2022更换背景壁纸逐步图示教程

&#x1f984;个人主页:修修修也 ⚙️操作环境:Visual Studio 2022 目录 一.下载壁纸插件 二.更改自定义壁纸 三.调整壁纸布局 一.下载壁纸插件 因为更改自定义壁纸需要一个插件的辅助,所以我们要先下载一个小插件 首先,打开VS2022,点击"扩展"->"管理扩…

在Js中如何实现文本朗读即文字转语音功能实现

前言 平时在做项目的过程中&#xff0c;有遇到场景是客户要求播放语音的场景&#xff0c;比如:无障碍朗读,整篇文章实现朗读,文字转语音,文字转语音播放等等。 在不使用第三方API接口的情况下,这里需要js来实现文字转语音播放的功能。能想到的也就是利用html5的个API&#xff1…

数据分析入门

B站&#xff1a;01第一课 数据分析岗位职责和数据分析师_哔哩哔哩_bilibili 一、岗位&#xff1a;数据分析师 Q1 数据分析师在公司做什么工作&#xff1f; 数据来源于公司核心业务&#xff0c;通过监测业务健康度来确定业务的健康状况&#xff1b; 通过对用户精细化分析&am…

vue3 + axios 中断取消接口请求

前言 最近开发过程中&#xff0c;总是遇到想把正在请求的axios接口取消&#xff0c;这种情况有很多应用场景&#xff0c;举几个例子&#xff1a; 弹窗中接口请求返回图片&#xff0c;用于前端展示&#xff0c;接口还没返回数据&#xff0c;此时关闭弹窗&#xff0c;需要中断接…

【网络】网络编程套接字(一)

网络编程套接字 一 一、网络编程中的一些基础知识1、认识端口号2、认识TCP协议和UDP协议3、网络字节序 二、socket编程1、sockaddr结构2、简单的UDP网络程序Ⅰ、服务器的创建Ⅱ、运行服务器Ⅲ、关于客户端的绑定问题Ⅳ、启动客户端Ⅴ、本地测试Ⅵ、网络测试 一、网络编程中的一…

泛微全新低代码平台e-builder在沪发布,超千名与会者共商数字化转型

10月18日下午&#xff0c;泛微低代码平台体验大会在上海顺利举办&#xff0c;大会以“智能、协同、全程数字化”为主题&#xff0c;吸引了上千位政府及企事单位的信息化负责人参与。 活动现场&#xff0c;参会者身临其境地体验了泛微低代码平台&#xff0c;了解了泛微低代码平…

WebDAV之π-Disk派盘 + 密码键盘

密码键盘是一款密码管理器,可以存储和管理需要受保护的数据。为方便日常使用,同时也是一款安全输入法,帮您安全便捷地填写账号密码、通用内容、卡包信息。 密码键盘使用军事级的 PBKDF2 有损加密算法保护您的根密码,使用军事级的 AES 加密算法保护您的存储数据。云端再额外…

分类预测 | MATLAB实现基于BiLSTM-AdaBoost双向长短期记忆网络结合AdaBoost多输入分类预测

分类预测 | MATLAB实现基于BiLSTM-AdaBoost双向长短期记忆网络结合AdaBoost多输入分类预测 目录 分类预测 | MATLAB实现基于BiLSTM-AdaBoost双向长短期记忆网络结合AdaBoost多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于BiLSTM-…

华为数通方向HCIP-DataCom H12-831题库(多选题:1-20)

第01题 如图所示,路由器所有的接口开启OSPF,图中标识的ip地址为设备的Loopback0接口的IP地址,R1、R2,R3的Loopback0通告在区域1,R4的Loopback0通告在区域0、R5的Lopback0通告在区域2,下列哪些IP地址之间可以相互Ping通? A、10.0.3.3和10.0.5.5 B、10.0.4.4和10.0.2.2 …

【CANoe】XML Test Module使用实例

文章目录 一、实操步骤1、增加XML Test Module节点2、配置XML Test Module节点3、XML Test Module节点增加CAPL脚本(.can文件)4、文件夹结构5、使用仿真节点开始测试6、测试结果与测试报告7、同理&#xff0c;在Test Setup也可如此操作 一、实操步骤 1、增加XML Test Module节…

【ubuntu】常用软件安装

【ubuntu】常用软件安装 前言安装搜狗输入法安装flameshot截图软件总结 前言 Ubuntu 是一个基于 Linux 内核的开源操作系统&#xff0c;它提供了简单易用的界面和丰富的功能&#xff0c;广受开发者和普通用户的喜爱。博主时常也需要经常切换Ubuntu系统进行开发和学习&#xff…

SEM和SD的区别和联系,以及其计算方法

http://t.csdnimg.cn/aHe99http://t.csdnimg.cn/aHe99

【vue3】传送组件、Teleport

把test里的内容传送到test2 //test1.vue <template><div>test1<Teleport v-if"flag" to".aa">test1的内容</Teleport></div></template><script setup langts>import { ref,reactive,onMounted } from vueconst…