SpringBoot入门4
整合SpringBoot连接池
- java为数据库连接池提供了公共的接口:DataSource
- 常见的连接池:CP30,DBCP,DRUID,hikariCP
- 用户调用getConnection()方法获得一个连接。如果连接池里没有连接,就会调用Driver(驱动)对象的connec()方法从数据中获取,并在连接池中存放一份,然后将连接返回给调用方。
整合HikariCP连接池

- 2.配置连接池
spring.datasource.url=jdbc:mysql://localhost:3306/数据库?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
@SpringBootTest
public class TestDataSource {
// dataSource对象在运行时指向的具体对象是什么?HikariDataSource
// dataSource是谁创建的?spring框架(基于底层自动配置)
@Autowired
private DataSource dataSource;
@Test
void testSource() throws SQLException {
System.out.println(dataSource.getClass().getName());// com.zaxxer.hikari.HikariDataSource
// 获取连接的过程?getConnection()查询是否有连接池,没有就构建
// 基于Driver对象创建连接,并将链接放入池中,最后从池中获取用户需要的链接
Connection connection = dataSource.getConnection();
System.out.println(connection);
}
}
整合MyBatis框架

mybatis.configuration.default-statement-timeout=30
mybatis.configuration.map-underscore-to-camel-case=true
// sql映射的映射文件方式
mybatis.mapper-locations=classpath:/mapper/*/*.xml
// 日志输出
logging.level.com.cy=DEBUG
代码测试(按id删除数据库内容)
drop database if exists dbgoods;
create database dbgoods default character set utf8;
use dbgoods;
create table tb_goods(
id bigint primary key auto_increment,
name varchar(100) not null,
remark text,
createdTime datetime not null
)engine=InnoDB;
insert into tb_goods values (null,'java','very good',now());
insert into tb_goods values (null,'mysql','RDBMS',now());
insert into tb_goods values (null,'Oracle','RDBMS',now());
insert into tb_goods values (null,'java','very good',now());
insert into tb_goods values (null,'mysql','RDBMS',now());
insert into tb_goods values (null,'Oracle','RDBMS',now());
insert into tb_goods values (null,'java','very good',now());
insert into tb_goods values (null,'mysql','RDBMS',now());
insert into tb_goods values (null,'Oracle','RDBMS',now());
insert into tb_goods values (null,'java','very good',now());
insert into tb_goods values (null,'mysql','RDBMS',now());
insert into tb_goods values (null,'Oracle','RDBMS',now());
- 创建com.py.pj.goods.dao.GoodsDao.java
package com.py.pj.goods.dao;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface GoodsDao {
int deleteObjects(Integer... ids);
@Delete("delete from tb_goods where id=#{id}")
int deleteById(Integer id);
}
- 创建测试类 com.py.pj.goods.dao.TestDataSource.java
package com.py.pj.goods.dao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
/**
* @author WL
* @version 创建时间:2020-8-29 9:39:21
* @Description 测试mapper注释的接口功能
*/
@SpringBootTest
public class TestGoodsDao {
/**
* 关联数据层接口,并由spring注入值
* 1.GoodsDao指向的对象是谁?由谁创建?由谁管理?
* $Proxy56是代理对象 /由mybatis创建/ Spring框架
* 2.GoodsDao指向的对象内部会做什么事情?
* 基于mybatis API进行会话操作。此变量指向的对象,底层会通过mybatis中的sqlsession实现与数据库对话
*/
//GoodsDao接口的实现类$Proxy56由mybatis创建,mybatis底层基于反射使用到了Proxy类,
@Autowired
private GoodsDao goodsdao; //此变量指向的对象,底层会通过mybatis中的sqlsession实现与数据库对话
@Test
public void testGoods() {
int rows = goodsdao.deleteById(3);
System.out.println(rows);
}
@Test
void testDeleteObjects() {
int rows = goodsdao.deleteObjects( );
System.out.println(rows);
}
}
- 创建映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.py.pj.goods.dao.GoodsDao">
<!-- -->
<delete id="deleteObjects">
delete from tb_goods where id in
<foreach collection="ids" open="(" close=")" separator=","
item="id">
#{id}
</foreach>
</delete>
</mapper>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。