2.1、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
mysql-connector-java:MySQL连接Java的驱动程序。
spring-boot-starter-jdbc:支持通过JDBC连接数据库。
2.2、添加数据库配置
在application.properties中插入以下配置
### MySQL连接信息
spring.datasource.url=jdbc:mysql://192.168.199.130:3306/test
### 用户名
spring.datasource.username=root
### 密码
spring.datasource.password=123456
### 驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
2.3、创建表和实体类
①新建数据表tb_user并插入数据
CREATE TABLE `test`.`tb_user` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` VARCHAR (10) COMMENT '用户名',
`password` VARCHAR (32) COMMENT '密码',
PRIMARY KEY (`id`)
);
INSERT INTO tb_user(`name`,`password`) VALUES("zhangsan","zhangsanps");
INSERT INTO tb_user(`name`,`password`) VALUES("lisi","lisips");
②新建实体类User
public class User {
private Integer id;
private String name;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
public User(Integer id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
public User() {
}
}
2.4、集成测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot02MysqlApplicationTests {
@Resource
private JdbcTemplate jdbcTemplate;
@Test
public void contextLoads() {
String sql = "select id,name,password from tb_user";
List<User> users = (List<User>)jdbcTemplate.query(sql, new RowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
return user;
}
});
System.out.println("查询成功:");
users.forEach(System.out::println);
}
}
JdbcTemplate:JDBC连接数据库的工具类
@Resource:自动注入,通过该注解,SpringBoot在启动后,实例化一个JdbcTemplate对象。
query()方法:JdbcTemplate对象中的查询方法,传入SQL语句和RowMapper对象
RowMapper对象:可将查询出的每一行数据封装成用户定义的类。
2.5、集成Druid
Druid是阿里巴巴开源项目中的一个数据库连接池。Druid是一个JDBC组件,包括三部分:①DruidDriver代理Driver,能够提供基于Filter-Chain模式的插件体系;
②DruidDataSource搞笑可管理的数据库连接池;③SQLParser,支持所有JDBC兼容的数据库,包括Oracle、MySQL、SQLServer等。Druid在监控、可扩展、稳定性和性能方面具有明显的优势,通过其提供的监控功能可以观察数据库连接池和SQL查询的工作情况,使用Druid连接池可以提高数据的访问性能。
2.5.1、引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.3</version>
</dependency>
2.5.2、Druid配置
### MySQL连接信息
spring.datasource.url=jdbc:mysql://192.168.199.130:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### 数据源类别
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
### 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
### 配置获取连接等待超时的时间,单位是毫秒
spring.datasource.maxWait=60000
### 配置间隔多久才进行一侧检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
### 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
### 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
### 配置监控统计拦截的filters,去掉后监控界面的SQL无法统计,'wall'用于防火墙
spring.datasource.filters=stat,wall,log4j
### 通过connectionProperties属性,打开mergeSql功能,慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
### 合并多个DruidDataSource的监控数据
#spring.datasource.useGlobalDataSourceStat=true
2.5.3、开启监控功能使用代码注册Servlet和Filter实现开启监控功能
@Configuration
public class DruidConfiguration {
@Bean
public ServletRegistrationBean druidStatViewServlet(){
//创建servlet注册实体
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
//白名单
servletRegistrationBean.addInitParameter("allow","127.0.0.1");
//IP黑名单(如果allow与deny共同存在时,deny优先于allow)
servletRegistrationBean.addInitParameter("deny","192.168.10.101");
//登录查看信息的账号和密码
servletRegistrationBean.addInitParameter("loginUsername","admin");
servletRegistrationBean.addInitParameter("loginPassword","123456");
//是否能够重置数据
servletRegistrationBean.addInitParameter("resetEnable","false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean druidStatFilter(){
//创建过滤器
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//添加过滤器过滤路径
filterRegistrationBean.addUrlPatterns("/*");
//添加需要忽略的格式信息
filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
@Configuration:相关于将该类注解成一个Spring的XML配置文件
@Bean:等同于XML配置文件中的<bean>配置。
访问http://localhost:8080/druid/index.html;输入用户名admin和密码123456登录