功能:在dao持久层操作数据库,用于简化JDBC的开发
JDBC
- 使用java语言操作关系型数据库的api
- 各个数据库厂商提供数据库驱动jar包
public void testJdbc() throws Exception {
//1. 注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 获取连接对象
String url = "jdbc:mysql://localhost:3306/mybatis_";
String username = "root";
String password = "1234";
Connection connection = DriverManager.getConnection(url, username, password);
//3. 获取执行SQL的对象Statement,执行SQL,返回结果
String sql = "select * from user";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
//4. 封装结果数据
List<User> userList = new ArrayList<>();
while (resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
short age = resultSet.getShort("age");
short gender = resultSet.getShort("gender");
String phone = resultSet.getString("phone");
User user = new User(id,name,age,gender,phone);
userList.add(user);
}
userList.stream().forEach(user -> {
System.out.println(user);
});
//5. 释放资源
statement.close();
connection.close();
}
硬编码:sql需要改变用户名和密码,编译时间成本很高
封装:封装需要一个字段一个字段封装,繁琐
频繁获取资源、释放资源:资源浪费
MyBatis对比JDBC
resources.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=123456
main.java.com.itheima.mapper.userMapper
@Mapper //在运行时,会自动生成该接口的实现类对象(代理对象),并且将该对象交给ioc容器管理
public interface UserMapper {
//查询全部用户信息
@Select("select id, name, age, gender, phone from user")
public List<User> list();
}
test.java.com.itheima.Demo1ApplicationTests
@Autowired
private UserMapper userMapper;
@Test
public void testListUser(){
List<User> userList = userMapper.list();
userList.stream().forEach(user -> {
System.out.println(user);
});
}
数据库连接池
- 容器、负责分配、管理数据库连接
-
没有连接池,连上之后不用了就关闭连接
- 有连接池,会创建数据库连接池,重复是用一个现有的数据库连接,用完归还
- 释放空闲时间超过阈值的连接
标准接口:DataSource
springboot主要是用hikariDataSource
Druid用的也很多,阿里巴巴开源数据库连接池项目
切换Druid数据库连接池:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
lombok
使用背景:虽然只有五个参数,但是要写的pojo.User有70行代码
- lombok是java类库,可以自动生成构造器、getset、equals、hashcode、tostring、并且生成日志变量
* @see Getter * @see Setter * @see ToString * @see EqualsAndHashCode