Mybatis学习笔记2 增删改查及核心配置文件详解

Mybatis学习笔记1 Mybatis入门_biubiubiu0706的博客-CSDN博客

 将Mybatis进行封装

SqlSessionUtil工具类

package com.example.util;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;/*** @author hrui* @date 2023/9/8 14:55*/
public class SqlSessionUtil {//工具类的构造方法一般都是私有化//方法都是静态的//为了防止new对象,构造方法私有化private SqlSessionUtil(){}private static SqlSessionFactory sqlSessionFactory;//类加载时候执行//SqlSessionUtil工具类在被加载的时候,解析mybatis-config1.xml.创建sqlSessionFactory对象static{try {SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();//一个sqlSessionFactory对应一个数据库sqlSessionFactory= sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config1.xml"));} catch (IOException e) {e.printStackTrace();}}//获取会话对象 返回会话对象public static SqlSession openSession(){SqlSession sqlSession = sqlSessionFactory.openSession();return sqlSession;}
}

这样测试就方便很多了

新建一个模块  mybatis-02-crud

maven项目

引入依赖

<!--引入mybatis依赖和mysql依赖--><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.10</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency><!--引入logback依赖--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies>

把工具类和mybatis-config1.xml,logback.xml(日志配置文件),xxxMapper.xml都复制过来

下面这种写法,实际开发中是不存在的,值是写死的

传入的这个对象就是封装数据的 和sql里的#{xxx}形成映射关系

用Map封装试下     #{}内写Map集合的key  如果key不存咋子  #{key不存在} 就是个null值

插入成功

一般来说,我们会把key最为对应关系

上面是通过Map传值

下面通过POJO类传值 提供set get  无参  全参  toString equal  hashCode

此时#{}里就是POJO的属性名(严格来说是get方法后面XXX转小写?我认为是忽略大小写   形成一种映射关系 此时如果属性名写错,Map的话会插入null,但是pojo的话会报错,并且提示 There is no getter for property named 'xxxx' in class xxxxxxxx

就报错说找不到该属性的get方法

完成delete操作

如果直接传个常量值的话   #{随便写什么都可以}

完成update操作

查询  查一个

下图id写错了  selectCarById

这里注意下  查询不用commit

解决办法

1.加别名

2.用resultMap

3.配置成使用驼峰标识

1.加别名方式:

2.使用resultMap

3.使用驼峰

在mybatis核心配置文件里

.XML

测试

select查所有

关于映射文件中namespace的作用

原先上面测试都是只有一个xxxMapper.xml映射文件

当我有两个.XML映射文件的时候且里面的id一样的时候

这种方式就会出错

测试

这种情况下

Mybatis核心配置文件中的多环境配置

关于Mybatis核心配置文件中的事务管理

关于DataSource------->DataSource是JDK的规范  DataSource简单理解,放的就是数据库连接

不同类型的DataSource下的不同属性

JNDI作用:让Mybatis使用容器的连接池    容器实现了JNDI规范

关于数据源 类型  UNPOOLED-->不适用数据库连接池--->每次创建新的Connection对象

和POOLED---->使用Mybatis自己实现的数据库连接池

关于上述亮着的具体区别是什么?

在自己本地数据库新建库和表

核心配置文件  默认的数据库使用连接池   本地不适用连接池,看下具体区别

测试  用连接池的话,会重用连接对象

测试另外一个不用连接池的数据库

关于数据库连接池的一些配置

当连接用完,会怎么办???????

它会等待20秒   20秒到了之后,会强制拿出连接继续执行

关于最大空闲数量

关于核心配置文件里的preoperties标签

properties的另外一种用法

properties还有一种写法  url的写法  也是可以的

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

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

相关文章

运维学习之部署Grafana

sudo nohup wget https://dl.grafana.com/oss/release/grafana-10.1.1.linux-amd64.tar.gz &后台下载压缩包&#xff0c;然后按一下回车键。 ps -aux | grep 15358发现有两条记录&#xff0c;就是还在下载中。 ps -aux | grep 15358发现有一条记录&#xff0c;并且tail …

leetcode 332. Reconstruct Itinerary(重构行程)

有一些票tickets, tickets[ i ] [from, to], 每个出发到达城市名字都是3个大写英文字母&#xff0c; 同一个出发城市时&#xff0c;优先去字母顺序较小的到达城市。 必须先从“JFK”出发。 每个ticket必须用且只用一次&#xff0c;所有ticket一定会形成至少一个有效的行程&…

AIDL+MemoryFile匿名共享内存实现跨进程大文件传输

注&#xff1a;本文内容转载自如下文章&#xff1a;使用AIDL实现跨进程高效传输大文件 AIDL AIDL 是 Android 中实现跨进程通信(Inter-Process Communication)的一种方式。AIDL 的传输数据机制基于 Binder&#xff0c;Binder 对传输数据大小有限制&#xff0c;传输超过1M的文件…

微服务简介

微服务简介 微服务架构是一种软件架构模式&#xff0c;它将一个大型应用程序拆分为一组小型、独立的服务&#xff0c;每个服务都有自己的业务逻辑和数据存储。这些服务可以独立开发、部署和扩展&#xff0c;通常使用HTTP或其他轻量级通信协议进行通信。 以下是微服务架构的一…

KDM CCA Secure FHE

参考文献&#xff1a; [BFM88] Blum M, Feldman P, Micali S. Non-interactive zero-knowledge and its applications[M]//Providing Sound Foundations for Cryptography: On the Work of Shafi Goldwasser and Silvio Micali. 2019: 329-349.[FS90] Feige U, Shamir A. Witn…

阿里云CDN缓存配置及优化-oss绑定CDN缓存自动刷新功能

参考阿里云官网文档&#xff1a;https://help.aliyun.com/practice_detail/603170 1.缓存时间配置 在缓存管理中&#xff0c;可以方便地指定目录和文件后缀名在CDN节点上的缓存时间&#xff0c;缓存时长配置的长短&#xff0c;取决于源站对该文件的变更频率。我们需要分析下业务…

华为云云耀云服务器L实例评测|基于云耀云服务器在Docker上部署nginx服务

文章目录 1、服务介绍云耀云服务器Docker介绍Docker-Compse介绍 2、在云耀云服务器安装Docker3、通过Docker run命令运行nginx服务4、在云耀云服务器安装docker-compose5、通过docker-compose方式启动nginx服务 1、服务介绍 云耀云服务器 云耀云服务器&#xff08;Hyper Elas…

医疗知识图谱 neo4j

开源项目&#xff1a; https://github.com/liuhuanyong/QASystemOnMedicalKG 一.效果 二.需要安装&#xff1a; pip install pyahocorasick pip install py2neo 三.需要修改&#xff1a; 需要改的点&#xff1a; 1.改连接的方式 2.改读文件的方式 MedicalGraph 运行&am…

Spring Boot的配置文件

Spring Boot中的配置文件有两种&#xff1a;properties格式和yml格式 一、propertise格式 propertise格式是Springboot默认的配置文件的格式&#xff0c;它才有键值对keyvalue的方式存储配置信息&#xff0c;有系统key值和自定义key值两类。 系统key值就是Spring boot约定的…

Qt Quick Layouts Overview

Qt快速布局概述 #【中秋征文】程序人生&#xff0c;中秋共享# Qt快速布局是用于在用户界面中排列项目的项目。由于Qt快速布局还可以调整其项目的大小&#xff0c;因此它们非常适合可调整大小的用户界面。 开始 可以使用文件中的以下导入语句将 QML 类型导入到应用程序中。.qml…

python: excel假期时间提取统计

# encoding: utf-8 # 版权所有 2023 涂聚文有限公司 # 许可信息查看&#xff1a; # 描述&#xff1a; # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 311 # Datetime : 2023/9/3 7:04 # User : geovindu # Product : PyCharm # Proje…

Vulkan入门——编译Shaderc

编译 Vulkan-Samples时&#xff0c;遇到了如下shaderc编译报错。 ninja: error: /Users/xiaxl/Library/Android/sdk/ndk/21.1.6352462/sources/third_party/shaderc/libs/c_static/armeabi-v7a/libshaderc.a, needed by ../../../../build/intermediates/cmake/debug/obj/arme…