常用的数据库文件配置
最近整理下学习过的数据库的知识,准备开发个项目,先手准备了相关的配置,有一部分是以前学习搬过来的,放在这里做参考。
这个配置文件没有加日志配置和具体的缓存配置,都是一些基础的常用的配置文件
先看下pom吧
<!--版本信息-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.0</version>
<relativePath/>
</parent>
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--jedis-redis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!--mybatis-plus代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<!--这个generator好像包含了velo,没做测试,-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
当配置文件多的时候还是用properties舒服点,yaml看的有点乱
这里是properties配置文件
#redis地址 你的redis位置
spring.redis.host=xxx
#redis接口 用6379容易被攻击,别问我为什么知道的
spring.redis.port=6377
#redis密码
spring.redis.password=xxx
#连接池最大连接数
spring.redis.jedis.pool.max-active=2000
#最大阻塞时间 负值无限制
spring.redis.jedis.pool.max-wait=-1
#最大空闲连接
spring.redis.jedis.pool.max-idle=500
#最小空闲连接
spring.redis.jedis.pool.min-idle=0
#超时连接(毫秒)
spring.redis.timeout=5000
#datasource-url localhost改成你的地址
spring.datasource.url=jdbc:mysql://localhost:3306/zy_workspace?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false
#username
spring.datasource.username=root
#passowrd
spring.datasource.password=xxx
#类型(druid)
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#关系数据库
#驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#初始化数量
spring.datasource.druid.initial-size=5
#最小数量
spring.datasource.druid.min-idle=5
#最大的可活跃的连接池数量
spring.datasource.druid.max-active=20
#最大连接时间
spring.datasource.druid.max-wait=10000
#连接回收器的运行周期时间,时间到了清理池中空闲的连接
spring.datasource.druid.time-between-eviction-runs-millis=60000
#用来检测连接是否有效的sql
spring.datasource.druid.validation-query= SELECT 1
#preparedStatements缓冲数量
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=200
# mybatis-plus配置
#配置逻辑删除值为1
mybatis-plus.global-config.db-config.logic-delete-value=1
#未删除为0
mybatis-plus.global-config.db-config.logic-not-delete-value=0
#开启驼峰命名
mybatis-plus.configuration.map-underscore-to-camel-case=true
顺便加下相关的config
先是mybatis的
package com.boot.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement//事物
@Configuration
public class MybatisPlusConfig {
//注册乐观锁插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
// @Bean//逻辑删除
// public ISqlInjector sqlInjector(){
// return new LogicSqlInjector();
// }
@Bean//分页插件
public MybatisPlusInterceptor paginationInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
接着是redis的,这里的redis可能缺少东西,暂时没深入学习
package com.boot.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
@SuppressWarnings("all")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
//序列化配置
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
//String的序列化
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
//key采用String序列化
template.setKeySerializer(stringRedisSerializer);
//hash的key采用string序列化
template.setHashKeySerializer(stringRedisSerializer);
//value序列化采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
//hash的value序列化采用jackson
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
最后用做时间处理器的
package com.boot.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
pojo就不展示了有兴趣的可以留言。