P116 Mybatis-入门
Mybatis是一款优秀的持久层框架,用于简化JDBC的开发。
持久层就是三层控制中的Dao层,数据访问层/持久层,
P117 Mybatis-入门-快速入门程序
步骤:
-
创建springboot工程,数据表和实体类
-
引入mybatis依赖,配置Mybatis,数据库连接信息,在properites中编写
-
编写sql语句,基于注解或者基于xml方式
要引入Mybatis Framework和mysql driver
mybatis操作数据库就是在java中编写sql,
按照mybatis规范需要定义一个持久接口mapper,加上注解@Mapper,表明是mybatis的持久接口,
在mybatis中只需要定义mapper接口就可以了,不需要定义实现类,因为程序在运行时框架底层就自动定义了实现类,
依赖解释:
<!-- mysql驱动包--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency>
建立表格和数据,如图:
属性与字段是一一对应的。
配置数据库的连接信息可以如下:
#四要素#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc://localhost::3306/javawebstudy-mybatis
#连接数据库的用户
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=12345
SQL语句使用注解的方式实现,放在mapper包中,例如:
@Mapper // 框架运行时会自动生成该接口的实现类对象(代理对象)
// 并且将该对象交给IOC容器管理
public interface UserMapper {
// 查询全部用户信息// 多条信息封装到集合当中// 加上注解,表名是SQL查询@Select("select * from user")public List<User> list();
}
单元测试的方法应该在test目录中进行,其中@SpringBootTest注解就是springboot整合单元测试的注解,有这个注解单元测试方法在运行的就会自动加载整个环境,创建IOC容器,再通过依赖注入获取到需要的bean对象,
进行单元测试,输出效果如下所示:
P118 Mybatis-入门-配置SQL提示
默认mybatis中编写SQL语句是不识别的,可以如下配置:
不提示表名,是因为idea和数据库没有建立连接,不识别表信息,应在idea中配置mysql数据库连接。
P119 Mybatis-入门-JDBC
mybais简化JDBC的使用
JDBC:java database connectivity,使用java操作关系型数据库的一套API
JDBC仅仅是借口,具体的实现依据数据库的不同而不同,各个厂商提供的实现就是驱动,提供数据库驱动jar包。
使用的是JDBC的接口,真正执行的代码是驱动Jar包中的实现类。
在原始JDBC中,连接数据库信息是写死在java代码中,硬代码,一旦发生变动,代码需要重新更改后打包编译运行,解析封装字段也很繁琐,频繁获取连接,资源浪费
在mybatis中解决方法为:
-
直接操作properties配置文件
-
Mybatis自动将查询结果进行封装
-
通过spring.datasource,spring底层会自动采用数据库连接池技术统一管理好分配这些连接,因此执行sql语句的时候,每次从连接池中获取连接就可以了,然后执行sql语句,执行完毕后再将连接归还给连接池,起到复用,类似线程池
P120 Mybatis-数据库连接池
数据库连接池类似线程池,也是一个容器,存储的是数据库的一个个连接对象connection,即负责分配、管理数据库连接connection.
允许应用程序重复使用一个现有的数据库连接,而不是重新再建立一个。
会释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。
优势:
-
资源重用
-
提升系统响应速度
-
避免数据库连接遗漏
实现的标准接口:DataSource
要想获取一个连接,可以使用getConnection()
常见的数据连接池:
-
C3P0
-
DBCP
-
Druid,常用
-
Durid连接池是阿里巴巴开源的数据库连接池项目
-
功能强大,性能优秀,是java语言最好的数据库连接池之一
-
-
Hikari,springboot中默认自带
在项目中使用Druid,例如:
- 先引入相关的起步依赖,假设是springboot2x版本则是下面的
<!-- 引入Druid依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency>
假设是springboot3x版本则是下面的,
<!-- 引入Druid依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId><version>1.2.20</version></dependency>
进行单元测试则成功切换到Druid数据池,
- 配置数据库连接信息
P121 Mybatis-lombok工具包介绍
使用lombok解决实体类创建的臃肿现象,使用一些注解解决了问题,就不需要再去声明一系列get、set等方法。
lombok是一个实用的java类库,通过注解的形式自动生成构造器、getter/setter、equals、hashcode、tostring等方法,可以自动化生成日志变量,简化java开发,提高效率。
引入依赖:
<!-- 添加lombok依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
然后实体类可以是:
@Data
public class User {private Integer id;private String name;private Integer age;private Integer gender;private String phone;
}
以后就可以使用lombok的注解简化实体类的定义