MyBatis
持久层框架,用于简化JDBC开发,是对原始JDBC程序的封装
持久层
数据访问层(dao),用来操作数据库
框架
一个半成品软件,一套可重用的通用软件代码模型.
JDBC
(Java DataBase Connectivity)
本质是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的缺点
查询结果的解析及封装非常繁琐
每次查询都需要获取连接和释放连接
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 日志相关