目录
1.概述
在项目开发中,我们并不会每次都基于图形化工具来操作数据库中的数据,而是通过java程序去操作数据库。目前,Mybatis为这项技术的主流。
MyBatis 是一个半自动的持久层(就是dao层,数据访问层)框架,它提供了简单的方法来处理数据库中的数据。MyBatis 允许开发者使用 XML 或注解来配置和映射原生 SQL 语句到 Java 对象,用于简化JDBC的开发。
JDBC(Java Database Connectivity)是一个Java API,提供了一种标准的方法,允许Java程序连接到数据库并执行SQL语句,通过底层的JDBC程序操作数据库非常繁琐。
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.数据库连接池
用户从连接池中获取链接,使用完后再归还给连接池。同时连接池会检测连接空闲时间,如果用户获取链接但是并没有使用它去连接数据库,超过最大空闲时间后就会回收这条连接。这样就能做到重复使用。
以下是数据库连接池的一些优势:
-
资源复用:连接池维护一组数据库连接,这些连接可以在多个请求之间共享和重用。
-
减少开销:创建和销毁数据库连接是一个资源密集型的操作。通过使用连接池,可以减少这种开销,因为连接是在池中预先创建和维护的。
-
提高性能:避免了频繁的连接创建和销毁,数据库连接池可以显著提高应用程序的性能。
-
线程安全:在多线程环境中可以安全地被共享和使用,避免用户没有链接使用的情况
常用的连接池:Springboot默认为Hikari连接池
添加起步依赖就能更换连接池了
5.Lombok
如果实体类的字段属性很多,我们既要提供get/set方法,还要重写toString方法,可能还需要提供无参构造和有参构造等一些其他的方法。虽然可以快速生成,但是会造成实体类非常臃肿。采用Lombok技术可以解决以上问题。
Lombok 是一个Java库,用于通过注解自动地生成Java对象的样板代码,从而减少开发者需要编写的代码量。它特别适用于需要编写大量标准getter、setter、toString、hashCode、equals等方法的场合,并可以自动化生成日志变量,简化java开发、提高效率。
引入Lombok依赖就可以使用了
只要写上一个@Data注解,什么getset都不需要写了。
原理就是程序编译时,根据注解来决定生成什么样的方法。在编译后的class字节码文件中,注解已经没有了,取而代之的就是get/set方法