一、集成 MySQL 数据库

1.1 配置 MySQL

添加依赖

<dependencies>
<!--Spring 数据库相关依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--mysql 驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>

设置配置文件

spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8
username: root
password: sa000

1.2 测试数据库连接

添加测试依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

test/java 目录下新建测试类

@SpringBootTest
public class DataBaseTest { @Autowired
private DataSource dataSource; @Test
public void testConnection() {
try {
Connection connection = dataSource.getConnection();
Assert.assertNotNull(connection);
} catch (SQLException e) {
fail("数据库连接获取失败,错误原因:" + e);
}
}
}

执行测试,发现绿条说明测试通过。

1.3 设置连接池

SpringBoot 在我们引入 spring-boot-starter-jdbcspring-boot-starter-data-jpa 依赖后就会默认启用连接池功能,它的连接池默认创建选择规则如下:

  • 优先寻找创建 HikariCP 连接池

  • 如果没有 HikariCP 连接池,会查找创建 Tomcat

  • 如果没有 Tomcat 连接池,会查找创建 dbcp

  • 如果没有 dbcp 连接池,会查找创建 dbcp2

  • 也可以使用 spring.datasource.type 属性指定连接池类型

    spring.datasource.type= com.zaxxer.hikari.HikariDataSource

我们来通过一个测试方法验证下:

@SpringBootTest
public class DataBaseTest { @Autowired
private DataSource dataSource; @Test
public void testDataSourceType(){
Assert.assertEquals(HikariDataSource.class,dataSource.getClass());
}
}

执行测试,发现绿条说明测试通过。

常用连接池配置如下:

#验证连接的有效性
spring.datasource.primary.test-while-idle=true
#获取连接时候验证,会影响性能
spring.datasource.primary.test-on-borrow=false
#在连接归还到连接池时是否测试该连接
spring.datasource.primary.test-on-return=false
spring.datasource.primary.validation-query=SELECT 1 FROM DUAL
#空闲连接回收的时间间隔,与test-while-idle一起使用,设置5分钟
spring.datasource.primary.time-between-eviction-runs-millis=300000
#连接池空闲连接的有效时间 ,设置30分钟
spring.datasource.primary.min-evictable-idle-time-millis=1800000
spring.datasource.primary.initial-size=5
#指定连接池中最大的活跃连接数.
spring.datasource.primary.max-active=50
#指定连接池等待连接返回的最大等待时间,毫秒单位.
spring.datasource.primary.max-wait=60000
#指定必须保持连接的最小值
spring.datasource.primary.min-idle=5

更多配置请参考 SprignBoot文档

1.4 JDBC 使用

配置好数据库之后,我们就来使用一下最基本的数据库操作。

在数据库 test 新建一个用户表:

CREATE TABLE `sys_user` (
`user_id` int(21) NOT NULL COMMENT '用户编码',
`user_name` varchar(50) DEFAULT NULL COMMENT '用户名',
`age` int(3) DEFAULT NULL COMMENT '年龄',
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

test/java 目录下新建测试类

@SpringBootTest
public class JdbcTest {
@Autowired
private JdbcTemplate jdbcTemplate; @Test
public void test() {
delete();
Assert.assertEquals(0,count());
add();
Assert.assertEquals(1,count());
} private int count() {
String sql = "select count(user_id) from sys_user ";
Integer result = jdbcTemplate.queryForObject(sql, Integer.class);
return result;
} private void add() {
String sql = "insert into sys_user " +
"values('1','marklogzhu','26','marklogzhu@163.com')";
jdbcTemplate.execute(sql);
} private void delete() {
String sql = "delete from sys_user ";
jdbcTemplate.execute(sql);
} }

执行测试,发现绿条说明测试通过。

二、集成 Redis 数据库

2.1 配置 Redis

添加依赖

<dependencies>
......
<!--Spring redis 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--redis 连接池依赖-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.7.0</version>
</dependency>
</dependencies>

设置配置文件

spring:
redis:
host: 127.0.0.1
port: 6379
# 连接超时时间
timeout: 1000ms
jedis:
pool:
# 最大连接数
max-active: 8
# 最大阻塞等待时间(负数表示没限制)
max-wait: -1ms
# 最大空闲
max-idle: 8
# 最小空闲
min-idle: 0

测试

@SpringBootTest
public class RedisTest { @Autowired
private StringRedisTemplate stringRedisTemplate; @Test
public void testSimpleValue(){
String key = "name";
String name ="MarkLogZhu";
stringRedisTemplate.opsForValue().set(key,name);
String result = stringRedisTemplate.opsForValue().get(key);
Assert.assertEquals(name,result);
} }

执行测试,发现绿条说明测试通过。

2.2 实现序列化功能

添加依赖

<dependencies>
......
<!--JSON工具类依赖-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
</dependencies>

设置序列化功能

@Configuration
public class RedisConfig { @Bean
@ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate<Object, Object> redisTemplate(
RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(jackson2JsonRedisSerializer());
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer());
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.afterPropertiesSet();
return redisTemplate;
} @SuppressWarnings({"unchecked", "rawtypes"})
@Bean
public Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer() {
final Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(
Object.class);
final ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().build();
objectMapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
return jackson2JsonRedisSerializer;
} }

测试

@SpringBootTest
public class RedisTest { @Autowired
private RedisTemplate redisTemplate; @Test
public void testObjectValue(){
String key = "obj";
SysUser user = new SysUser(1,"MarkLogZhu");
redisTemplate.opsForValue().set(key,user);
SysUser result = (SysUser)redisTemplate.opsForValue().get(key);
Assert.assertEquals(user,result);
} }

执行测试,发现绿条说明测试通过。

SpringBoot之集成数据库的更多相关文章

  1. springboot elasticsearch 集成注意事项

    文章来源: http://www.cnblogs.com/guozp/p/8686904.html 一 elasticsearch基础 这里假设各位已经简单了解过elasticsearch,并不对es ...

  2. SpringBoot使用Druid数据库加密链接完整方案

    网上的坑 springboot 使用 Druid 数据库加密链接方案,不建议采用网上的一篇文章<springboot 结合 Druid 加密数据库密码遇到的坑!>介绍的方式来进行加密链接实 ...

  3. SpringBoot项目集成PageHelper使用

    SpringBoot项目集成PageHelper使用 一.开始 ​ 地址:https://github.com/pagehelper/Mybatis-PageHelper ​ 在spring boot ...

  4. 在springboot中集成mybatis开发

    在springboot中利用mybatis框架进行开发需要集成mybatis才能进行开发,那么如何在springboot中集成mybatis呢?按照以下几个步骤就可以实现springboot集成myb ...

  5. springboot中集成memcached

    前言 Memcached 是一个高性能的分布式内存对象缓存系统,其存储性能在某些方面不比redis差,甚至在文本类型数据的存储上性能略优于redis,本文将介绍如何在springboot中集成memc ...

  6. Neo4j在linux上的安装与Springboot的集成

    Neo4j在linux上的安装与Springboot的集成 在linux安装: 前提:安装配置好java环境 1.下载neo4j 官方社区版下载地址:https://neo4j.com/downloa ...

  7. FMDB 二次封装工具类,让你快速学会封装,集成数据库

    来源:StrivEver 链接:http://www.jianshu.com/p/4c77aee0b41c 上个版本为了增加用户体验,部分页面集成了离线缓存数据功能,于是就在项目里使用了数据库管理离线 ...

  8. Springboot Application 集成 OSGI 框架开发

    内容来源:https://www.ibm.com/developerworks/cn/java/j-springboot-application-integrated-osgi-framework-d ...

  9. SpringBoot项目集成Hystrix

    Hystrix Hystrix是由Netflix开源的一个服务隔离组件,通过服务隔离来避免由于依赖延迟.异常,引起资源耗尽导致系统不可用的解决方案. 1.什么是服务熔断   服务熔断就是对该服务的调用 ...

随机推荐

  1. Xcode升级10.3后XIB文件报错

    Xcode升级10.3后XiB文件包错,提示: Failed to find or create execution context for description '<IBCocoaTouch ...

  2. C/C++中的 void 和 void*

    转自:https://blog.csdn.net/tonglin12138/article/details/86516789 写在前面:开门见山,大家看下面这个例子: unsigned char er ...

  3. 二、启动一款app演示

    一.下载aapt包 1. aapt即Android Asset Packaging Tool,在SDK的build-tools目录下.该工具可以查看apk包名和launcherActivity 2.打 ...

  4. 在SOUI3中使用预编译XML

    传统的XML文件通常是utf8编码的文本文件.使用文本文件好处在于方便查阅及修改. SOUI使用XML做为布局描述语言,所有的布局资源都是XML.文本文件格式自由,XML解析器需要对文件中的字符逐个解 ...

  5. 让DOM元素自动滚到视野内ScrollIntoView

    概述 项目中需要把一个DOM元素自动滚动到视野内,百思不得其解,最后再element库里面发现了这个方法,记录下来供以后开发时参考,相信对其他人也有用. 参考资料:element scroll-int ...

  6. wpf进程间通讯

    wpf进程间通讯 在联想智能识别项目中,需要用到进程间通讯,并且是低权限向高权限发送消息.首先声明一下,此项目是wpf的. 首先先简要说一下什么时候会用到进程间通讯,如:在Windows程序中,各个进 ...

  7. Jmeter接口测试系列之测试用例变量参数化处理

    在进行接口测试时,一组完整的接口测试用例,存在后一个测试用例使用前一个用例的请求结果中的数据,此时就需要参数化测试用例中值.直接使用变量调用会存在问题,此时就需要用到beanshell去改变. 举例说 ...

  8. 【算法与数据结构】并查集 Disjoint Set

    并查集(Disjoint Set)用来判断已有的数据是否构成环. 在构造图的最小生成树(Minimum Spanning Tree)时,如果采用 Kruskal 算法,每次添加最短路径前,需要先用并查 ...

  9. GCC 使用-C语言编译过程

    任何一种高级语言,要想在机器上执行,必须翻译为机器能读懂的机器语言.编译器就相当于翻译官,将高级语言翻译为机器语言. GCC 最初只用了编译 C 语言程序,全称是 GNU C Compiler.后来扩 ...

  10. ugui点击穿透判断

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Eve ...