数据库之Mybatis基础

目录

1.概述

2.入门

3.JDBC

4.数据库连接池

5.Lombok


1.概述

在项目开发中,我们并不会每次都基于图形化工具来操作数据库中的数据,而是通过java程序去操作数据库。目前,Mybatis为这项技术的主流。

MyBatis 是一个半自动的持久层(就是dao层,数据访问层)框架,它提供了简单的方法来处理数据库中的数据。MyBatis 允许开发者使用 XML 或注解来配置和映射原生 SQL 语句到 Java 对象,用于简化JDBC的开发。

JDBC(Java Database Connectivity)是一个Java API,提供了一种标准的方法,允许Java程序连接到数据库并执行SQL语句,通过底层的JDBC程序操作数据库非常繁琐。

官网:mybatis – MyBatis 3 | 简介

2.入门

入门程序:

springboot工程中引入mybatis和sql驱动,创建user类用于自动封装,在springboot中配置数据库信息,最后编写sql语句即可(基于注解)。

注解@Mapper会自动生成该接口的实现类对象,并交给IOC容器管理。注解@Select指定为查询方法,括号内为查询的sql语句。

单元测试启动后会加载springboot环境,创建IOC容器。通过依赖注入的形式调用userMapper中的list方法即可

配置SQL提示:注解@Select中的sql语句IDEA是不识别的,只是一串字符串,即使写错了也不会报错。按照以下步骤连接IDEA和数据库

然后右键sql语句可以手动配置SQL提示,之后写sql语句就可以提示错误信息和一键补全。

3.JDBC

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

JDBC程序存在的一些问题:1、连接数据库部分的用户名和密码在不同的环境下需要变动,而这里直接写死了,如果要变动就要重新编译打包。2、如果字段多,解析部分就会非常臃肿。3、每次执行sql语句都要连接数据库,执行完后又需要释放连接,这样频繁的获取连接和释放连接会造成资源的浪费。

而在Mybatis中,数据库信息配置在专门的文件中,这样只需要操作配置文件,而不需要去动java代码。同时查询的结果自动封装到user对象再封装到List集合中进行返回。

对于第三个问题,mybatis采用数据源配置数据库信息,这样springboot会自动采用数据库连接池技术统一管理和分配这些连接。

4.数据库连接池

用户从连接池中获取链接,使用完后再归还给连接池。同时连接池会检测连接空闲时间,如果用户获取链接但是并没有使用它去连接数据库,超过最大空闲时间后就会回收这条连接。这样就能做到重复使用。

以下是数据库连接池的一些优势:

  1. 资源复用:连接池维护一组数据库连接,这些连接可以在多个请求之间共享和重用。

  2. 减少开销:创建和销毁数据库连接是一个资源密集型的操作。通过使用连接池,可以减少这种开销,因为连接是在池中预先创建和维护的。

  3. 提高性能:避免了频繁的连接创建和销毁,数据库连接池可以显著提高应用程序的性能。

  4. 线程安全:在多线程环境中可以安全地被共享和使用,避免用户没有链接使用的情况

常用的连接池:Springboot默认为Hikari连接池

添加起步依赖就能更换连接池了

5.Lombok

如果实体类的字段属性很多,我们既要提供get/set方法,还要重写toString方法,可能还需要提供无参构造和有参构造等一些其他的方法。虽然可以快速生成,但是会造成实体类非常臃肿。采用Lombok技术可以解决以上问题。

Lombok 是一个Java库,用于通过注解自动地生成Java对象的样板代码,从而减少开发者需要编写的代码量。它特别适用于需要编写大量标准getter、setter、toString、hashCode、equals等方法的场合,并可以自动化生成日志变量,简化java开发、提高效率。

引入Lombok依赖就可以使用了

只要写上一个@Data注解,什么getset都不需要写了。

原理就是程序编译时,根据注解来决定生成什么样的方法。在编译后的class字节码文件中,注解已经没有了,取而代之的就是get/set方法

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值