MyBatis:mybatis入门

news/2024/9/24 11:11:45/

MyBatis

持久层框架,用于简化JDBC开发,是对原始JDBC程序的封装

持久层

数据访问层(dao),用来操作数据库

框架

一个半成品软件,一套可重用的通用软件代码模型.

JDBC

(Java DataBase Connectivity)

使用java语言操作关系型数据库的一套API

本质是sun公司官方定义的一套操作所有关系型数据库的规范(接口)

我们需要通过实现这套接口进行编程,真正执行的代码是由数据库厂商提供的驱动jar包中的实现类.

JDBC的操作步骤

创建User类接收数据

注:含下划线字段使用小驼峰进行接收,由mybatis自动映射

注册驱动

java">Class.forName("com.mysql.cj.jdbc.Driver");

获取连接对象

java">String url = "jdbc:mysql://192.168.150.101:3306/mybatis";
String username = "root";
String password = "123";
Connection connection = DriverManager.getConnection(url,username,password);

执行SQL语句,返回结果

java">Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from user");
List<User> userlist = new ArrayList<>();
//创建集合存放数据库中的表数据,对象每个属性对应表中每个字段

封装结果数据

java">while(resultSet.next()){int id = resultSet,getInt("id");String name = resultSet.getString("name");int age = resultSet.getInt("age");short gender = resultSet.getShort("gender");String phone = resultSet.getString("phone");User user = new User(id,name,age,gender,phone);UserList.add(user);//添加一行数据userlist.for;
}

释放资源

java">statement.close();
connection.close();

JDBC的缺点

数据库链接写死在java代码中

查询结果的解析及封装非常繁琐

每次查询都需要获取连接和释放连接

MyBatis的优化

数据库链接配置在springboot的配置文件 application.properties中

mybatis自动完成对sql语句和表数据的映射封装

使用连接池技术,无需频繁创建销毁连接

MyBatis的使用

创建项目,勾选依赖

创建数据库

配置参数

定义实体类

定义mapper包和其中的接口(使用@Mapper注解,定义抽象方法加sql操作注解)

测试类注入接口对象调用方法

数据库连接池

负责对数据库连接进行分配和管理

允许应用程序重复使用一个现有的数据库连接而不是再重新创建一个

释放空闲时间超过最大空闲时间的数据库连接

从而避免因为没有数据库连接引起的数据库连接遗漏

资源重用
提升系统的响应速度
避免数据库连接遗漏

连接池的原理

在一开始就创建一些连接对象进行存储,连接数据库时只需要获取一个连接进行使用即可,在使用完成后还能还给连接池实现资源重用,节省了频繁创建连接销毁所花费的时间也提升了系统响应的速度.

连接池的使用

在pom文件中引入依赖
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version>
</dependency>
在application.properties中引入数据库连接配置
java">spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.druid.username=root
spring.datasource.druid.password=1234

lombok

一个实用的java工具包,通过简单的注解来简化和消除代码

java">@Getter/@Setter 为所有的属性提供get/set方法
@ToString 会给类自动生成易阅读的toString方法
@EqualsAndHashCode 根据类所拥有的非静态字段自动重写equals方法和hashCode方法
@Data 提供了更综合的生成代码功能(@Getter + @Setter + @ToString + @EqualsAndHashCode)
@NoArgsConstructor 为实体类生成无参的构造方法
@AllArgsConstructor 生成实体类的全参构造方法
@Slf4j 日志相关

http://www.ppmy.cn/news/1449038.html

相关文章

Hive 表定义主键约束

文章目录 1.建表语句2.主键约束3.主键约束的意义参考文献 1.建表语句 先看一下官方给的完整的见表语句&#xff1a; CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later)[(col_name data…

Linux:web服务基于IP和域名部署

Linux&#xff1a;web服务基于IP和域名部署 配置基于IP的虚拟主机 # 添加两个IP [rootserver100 ~]# ip addr add 172.25.254.10/24 dev eth0 [rootserver100 ~]# ip addr add 172.25.254.20/24 dev eth0# 这个命令是专门用来查看IP信息的 [rootserver100 ~]# ip addr 1: lo:…

LeetCode - 611.有效三角形个数

题目链接 LeetCode - 611. 有效三角形的个数 动画解释 代码解释 class Solution { public:int triangleNumber(vector<int>& nums) {sort(nums.begin(),nums.end());int cout 0;int fix nums.size()-1;while(fix>1){int left 0;int right fix-1;while(left &l…

Thinkphp使用dd()函数

用过Laravel框架的同学都知道在调试代码的时候使用dd()函数打印变量非常方便&#xff0c;在ThinkPHP6及以上的版本框架中也默认加上了这个函数。但是在ThinkPHP5或更低版本的框架中&#xff0c;dd 并不是一个内置的方法&#xff0c;不过我们可以手动添加这个函数&#xff0c;步…

蓝桥杯单片机省赛——第八届“基于单片机的电子钟程序设计与调试”程序部分

往期回顾 第三届蓝桥杯单片机省赛 第四届蓝桥杯单片机省赛 第五届蓝桥杯单片机省赛 第六届蓝桥杯单片机省赛 第七届蓝桥杯单片机省赛 文章目录 往期回顾一、前期准备二、代码详情1.基础代码蜂鸣器/继电器/led/定时器之类的代码 2.按键详解按键写法讲解 3.驱动的处理驱动写法讲…

Android --- SQlite数据存储

使用 SQLite 保存数据 | Android Developers (google.cn) SQLiteOpenHelper 类包含一组用于管理数据库的实用 API。当您使用此类获取对数据库的引用时&#xff0c;系统仅在需要时才执行可能需要长时间运行的数据库创建和更新操作&#xff0c;而不是在应用启动期间执行。您仅需…

Postman 汉化安装及使用指南:快速上手 Postman 中文版

Postman 是一款常用的 API 测试工具&#xff0c;可以方便地进行接口测试、调试和文档编写。本文将详细介绍如何下载安装 Postman 并汉化&#xff0c;包括每个步骤的详细说明。 下载安装 Postman 1、打开浏览器&#xff0c;访问 Postman 官网&#xff0c;下载适用于自己系统的…

Grafana – unable to login “User already exists”

The Issue When trying to log into Grafana Web UI using an OIDC provider, in my case, Dex. The login would fail due to the error “User already exists”, after some time. This happened for any users given access via the OIDC. The Cause This looks to happ…