功能:在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
@Autowiredprivate UserMapper userMapper;@Testpublic 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