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

【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新用法

相关文章:

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

目录 尝试在mybatis项目中书写增删改查 遇见问题&#xff1a;使用mybaties向数据库中插入数据&#xff0c;idea显示插入成功&#xff0c;但是数据库中并没有数据变化? MyBatis核心配置文件剖析 细节剖析&#xff1a; try-catch新用法 截至目前我的项目存在的问题&#xf…...

机器学习终极指南:统计和统计建模03/3 — 第 -3 部分

系列上文&#xff1a;机器学习终极指南&#xff1a;特征工程&#xff08;02/2&#xff09; — 第 -2 部分 一、说明 在终极机器学习指南的第三部分中&#xff0c;我们将了解统计建模的基础知识以及如何在 Python 中实现它们&#xff0c;Python 是一种广泛用于数据分析和科学计…...

php获取农历日期节日

代码地址&#xff1a;php获取农历日期节日-遇见你与你分享 <?php $c new DayService(); $today$c->convertSolarToLunar(date(Y),date(m),date(d)); $time "农历".$today[1].$today[2]."日";class DayService {var $MIN_YEAR 1891;var $MAX_YEAR …...

主机重启后k8s kubelet无法自动启动问题解决梳理

1.问题描述 OS Version:CentOS Linux release 7.9.2009 (Core) K8S Version:Kubernetes v1.20.4 K8S安装配置完成后,重启服务器发现,kubelet没有正常启动(systemctl status kubelet) 命令: systemctl status kubelet [root@centos79-3 ~]# systemctl status kubelet ●…...

Hadoop面试题(2)

1.什么是数据倾斜&#xff1f;如何处理数据倾斜&#xff1f; 数据倾斜指的是在分布式计算中&#xff0c;数据在某些节点上不均匀地分布&#xff0c;导致某些节点的负载过重&#xff0c;影响整体计算性能。 处理数据倾斜的方法主要包括以下几种&#xff1a; 增加分区数量&…...

[ Windows-Nginx ]Windows服务器,Tomcat容器部署项目,整合Nginx

一、官网下载Nginx http://nginx.org/en/download.html 稳定版&#xff1a;windows的stable版本 注意&#xff1a;Nginx安装包不要放在中文目录下 二、conf目录下&#xff0c;修改nginx.conf文件 修改Nginx服务端口&#xff1a; 默认端口为80&#xff0c;即外界访问的入口…...

手搭手zabbix5.0监控redis7

Centos7安装配置Redis7 安装redis #安装gcc yum -y install gcc gcc-c #安装net-tools yum -y install net-tools #官网https://redis.io/ cd /opt/ wget http://download.redis.io/releases/redis-7.0.4.tar.gz 解压至/opt/目录下 tar -zxvf redis-7.0.4.tar.gz -C /opt/ #…...

学习笔记02-iview组件使用

学习笔记02-iview组件使用 文章目录 学习笔记02-iview组件使用一、iview 2-Tabs使用 一、iview 2-Tabs使用 官方地址&#xff1a;https://www.iviewui.com/view-ui-plus/component/navigation/tabs 点击tabs页面可以获取当前页面的name信息&#xff0c;并且可以点击后再获取当…...

华为OD 玩牌高手(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...

什么是AJAX

AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于创建交互式、动态网页应用程序的Web开发技术。它允许网页在不刷新整个页面的情况下&#xff0c;与服务器进行异步通信&#xff0c;以获取或发送数据。以下是对AJAX的主要组成部分和概念的概述&#xff1…...

[云原生1.]Docker数据管理与Cgroups资源控制管理

文章目录 1. Docker的数据管理1.1 数据卷1.1.1 示例 1.2 数据卷容器 2. 容器互联3. Cgroups资源控制管理3.1 简介3.2 cgroups的主要功能3.3 cpu时间片的简单介绍3.4 对CPU使用的限制3.4.1 对CPU使用的限制&#xff08;基于单个容器&#xff09;3.4.2 对CPU使用的限制&#xff0…...

【华为OD机试】HJ68 成绩排序

描述 给定一些同学的信息&#xff08;名字&#xff0c;成绩&#xff09;序列&#xff0c;请你将他们的信息按照成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理。 例示&#xff1a; jack 70 peter 96 Tom 70 smith 67 从高到低 成…...

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-[5]客户端与服务端连接

红队专题 招募六边形战士队员端操作系统SystemInfo类获取系统信息发送系统信息头文件声明头文件调用 未找到来自 OleAcc.dll 的导入LINK 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 端 发送连接->进入主线程->返回socket->…...

Windows Server服务器下的Linux子系统

Windows、Linux看似死敌一对&#xff0c;但其实微软对于开源实业还是相当支持的&#xff0c;Windows 10系统内就首次内置了一个Linux子系统(Windows Subsystem for Linux/WSL)&#xff0c;允许开发者模拟Linux环境&#xff0c;而且有需要的可以直接从Windows应用商店下载SUSE、…...

git初学者使用教程(包含Android studio中git使用)

文章目录 1、登录 / 注册git账号2、创建git仓库3、设置git的用户名和邮箱4、创建git仓库5、已有仓库推送代码到远程仓库6、进阶使用&#xff0c;命令行和Android studio软件使用1. 克隆&#xff08;Clone&#xff09;源码仓库2. 查看仓库状态&#xff08;Status&#xff09;3. …...

【Java】正则表达式,校验数据格式的合法性。

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 正则表达式 正则表达式&#xff1a; ①可以校…...

基于SSM的教务管理系统运行教程

文章目录 1、前期必备1.1、所需软件版本说明1.2、下载源码1.3、下载开发工具1.4、下载JDK并配置环境变量1.5、安装数据库和数据库管理工具1.6、安装配置Maven 2、将SQL文件导入到数据库2.1、新建MySQL连接2.2、新建数据库并导入SQL 3、用Eclipse运行程序3.1、导入educationalMa…...

Docker(六)、Docker-compose简单了解

Docker-compose简单了解 一、简单了解-->概述一&#xff09;、官方提供的容器编排工具&#xff1a;Docker-compose特点&#xff1a;二&#xff09;、Docker-compose安装三&#xff09;、浅实践下四&#xff09;.以上步骤遇到问题及解决 一、简单了解–>概述 Docker-comp…...

互联网Java工程师面试题·Java 面试篇·第一弹

目录 1、Java 中能创建 volatile 数组吗&#xff1f; 2、volatile 能使得一个非原子操作变成原子操作吗&#xff1f; 3、volatile 修饰符的有过什么实践&#xff1f; 4、volatile 类型变量提供什么保证&#xff1f; 5、10 个线程和 2 个线程的同步代码&#xff0c;哪个更容…...

基于材料生成优化的BP神经网络(分类应用) - 附代码

基于材料生成优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于材料生成优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.材料生成优化BP神经网络3.1 BP神经网络参数设置3.2 材料生成算法应用 4.测试结果…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

Java后端检查空条件查询

通过抛出运行异常&#xff1a;throw new RuntimeException("请输入查询条件&#xff01;");BranchWarehouseServiceImpl.java // 查询试剂交易&#xff08;入库/出库&#xff09;记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...