day08-Mybatis入门

MyBatis 是一款优秀的 持久层 框架,用于简化 JDBC 的开发。

官网:https://mybatis.org/mybatis-3/zh/index.html

一、快速入门

1.1 Mybatis 操作数据库的步骤

  1. 准备工作(创建 springboot 工程、数据库表 user、实体类 User)
  2. 引入 Mybatis 的相关依赖,配置 Mybatis (数据库连接信息)
  3. 编写 SQL 语句(注解/XML)

在这里插入图片描述

1.2 入门程序实现

1.2.1 准备工作

创建 springboot 工程,并导入 mybatis 的起步依赖、mysql 的驱动包。
在这里插入图片描述

1.2.2 配置 Mybatis

application.properties:

#配置数据库的连接信息 - 四要素
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=1234

1.2.3 编写 SQL 语句

在创建出来的 springboot 工程中,在引导类所在包下,在创建一个包 mapper。在 mapper 包下创建一个接口 UserMapper ,这是一个持久层接口(Mybatis 的持久层接口规范一般都叫 XxxMapper)。

@Mapper //在运行时,会自动生成该接口的实现类对象(代理对象), 并且将该对象交给IOC容器管理
public interface UserMapper {

    //查询全部用户信息
    @Select("select * from user")
    public List<User> list();

}
  • @Mapper注解:表示是 mybatis 中的 Mapper 接口
    程序运行时:框架会自动生成接口的实现类对象(代理对象),并给交 Spring 的 IOC 容器管理
  • @Select注解:代表的就是 select 查询,用于书写 select 查询语句

1.2.4 单元测试

@SpringBootTest //springboot整合单元测试注解
class SpringbootMybatisQuickstartApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testListUser(){
        List<User> userList = userMapper.list();
        userList.stream().forEach(user -> {
            System.out.println(user);
        });
    }

}

1.3 解决 SQL 警告与提示

在这里插入图片描述
在这里插入图片描述

二、JDBC 介绍(了解)

JDBC: ( Java DataBase Connectivity ),就是使用 Java 语言操作关系型数据库的一套 API。

JDBC 本质:

  1. sun 公司官方定义的一套操作所有关系型数据库的规范,即接口。
  2. 各个数据库厂商去实现这套接口,提供数据库驱动 jar 包。
  3. 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动 jar 包中的实现类。

技术对比
分析了 JDBC 的缺点之后,我们再来看一下在 mybatis 中,是如何解决这些问题的:

  1. 数据库连接四要素(驱动、链接、用户名、密码),都配置在 springboot 默认的配置文件 application.properties 中
  2. 查询结果的解析及封装,由 mybatis 自动完成映射封装,我们无需关注
  3. 在 mybatis 中使用了数据库连接池技术,从而避免了频繁的创建连接、销毁连接而带来的资源浪费。

在这里插入图片描述

三、数据库连接池

1 介绍

数据库连接池

  1. 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
  2. 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
  3. 释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏

优势

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

2 产品

官方(sun)提供了数据库连接池标准(javax.sql.DataSource接口)

  • 功能:获取连接
public Connection getConnection() throws SQLException; 
  • 第三方组织必须按照DataSource接口实现

常见的数据库连接池:

  • C3P0
  • DBCP
  • Druid
  • Hikari (springboot默认)

Druid(德鲁伊)

  • Druid 连接池是阿里巴巴开源的数据库连接池项目
  • 功能强大,性能优秀,是 Java 语言最好的数据库连接池之一

如果我们想把默认的数据库连接池切换为 Druid 数据库连接池,只需要完成以下两步操作即可:
官方地址:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
(1)在pom.xml文件中引入依赖

<dependency>
	<!-- Druid连接池依赖 -->
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.2.8</version>
</dependency>

(2)在application.properties中引入数据库连接配置

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

Lombok 是一个实用的 Java 类库,可以通过简单的注解来简化和消除一些必须有但显得很臃肿的 Java 代码。
在这里插入图片描述

通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方
法,并可以自动化生成日志变量,简化 java 开发、提高效率。
在这里插入图片描述

<!-- 在springboot的父工程中,已经集成了lombok并指定了版本号,故当前引入依赖时不需要指定version -->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>

Lombok 会在编译时,自动生成对应的 java 代码。我们使用 lombok 时,还需要安装一个 lombok 的插件(idea 自带)。

本项目是一个基于SSM(Spring+SpringMVC+MyBatis)后端框架与Vue.js前端框架开发的疫情居家办公系统。该系统旨在为居家办公的员工提供一个高效、便捷的工作环境,同时帮助企业更好地管理远程工作流程。项目包含了完整的数据库设计、前后端代码实现以及详细的文档说明,非常适合计算机相关专业的毕设学生和需要进行项目实战练习的Java学习者。 系统的核心功能包括用户管理、任务分配、进度跟踪、文件共享和在线沟通等。用户管理模块允许管理员创建和管理用户账户,分配不同的权限。任务分配模块使项目经理能够轻松地分配任务给团队成员,并设置截止日期。进度跟踪模块允许员工实时更新他们的工作状态,确保项目按计划进行。文件共享模块提供了一个安全的平台,让团队成员可以共享和协作处理文档。在线沟通模块则支持即时消息和视频会议,以增强团队之间的沟通效率。 技术栈方面,后端采用了Spring框架来管理业务逻辑,SpringMVC用于构建Web应用程序,MyBatis作为ORM框架简化数据库操作。前端则使用Vue.js来实现动态用户界面,搭配Vue Router进行页面导航,以及Vuex进行状态管理。数据库选用MySQL,确保数据的安全性和可靠性。 该项目不仅提供了一个完整的技术实现示例,还为开发者留下了扩展和改进的空间,可以根据实际需求添加新功能或优化现有功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值