目录
配置文件中的配置
#一般配置
#设置端口
serve.port=8080
#应用上下文
serve.servlet.context-path:/*
#连接数据库
spring.datasource.url=jdbc:mysql://localhost:3306/biao?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
#数据库账号
spring.datasource.username=root
#数据库密码
spring.datasource.password=root
#数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#定义mapper接口位置
mybatis.mapper-locations=classpath:mapper/*.xml
#全局雪花算法配置
mybatis-plus.global-config.db-config.id-type=assign_id
注意:
1.使用雪花算法的类型一般为Long型,数据库为bigint类型。
2.Java后端Long类型是19位的,前端JS的数字类型是16位的,所以传输数据是会造成精度损失,可以在实体的主键id上加上注解@JsonSerialize(using=ToStringSerializer.class)解决。
#自定义配置
例如:
#自定义的文件上传存储位置
ruiji.path: D:\SpringbootTemp\image\
用注解@value("${ruiji.path}")注入值。 如下示范:
#redis配置
spring:
redis:
host: 127.0.0.1
port: 6379
#password: 123321
lettuce:
pool:
max-active: 10 #最大连接
max-idle: 10 #最大空闲连接
min-idle: 1 #最小空闲连接
max-wait: -1 #连接等待时间
#读写分离配置
spring:
shardingsphere:
datasource:
names:
master,slave
# 主库(增删改操作)
master:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://121.89.200.204:3306/ruiji?characterEncoding=utf-8
username: root
password: root
# 从数据源(读操作)
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://121.89.200.205:3306/ruiji?characterEncoding=utf-8
username: root
password: root
masterslave:
# 读写分离配置
load-balance-algorithm-type: round_robin #轮询(如果有多个从库会轮询着读)
# 最终的数据源名称
name: dataSource
# 主库数据源名称
master-data-source-name: master
# 从库数据源名称列表,多个逗号分隔
slave-data-source-names: slave
props:
sql:
show: true #开启SQL显示,默认false
main:
allow-bean-definition-overriding: true
相关依赖:
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.0.0-RC1</version></dependency>
数据库一般配置
#时间自增
类型设置为datetime,默认设置为CURRENT_TIMESTAMP
登录拦截器配置
#实现HandlerInterceptor拦截器
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
if (session.getAttribute("id") == null) {
response.sendRedirect("/backend/page/login/login.html");
return false;
}
String s = session.getAttribute("id").toString();
Long id = Long.valueOf(s);
return true;
}
}
#登录拦截器配置(哪些放行,哪些拦截)
@Configuration
public class LoginInterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
LoginInterceptor interceptor = new LoginInterceptor();
ArrayList list = new ArrayList();
list.add("/**/*.js");
list.add("/**/*.css");
list.add("/backend/images/**");
list.add("/backend/page/login/login.html");
list.add("/employee/login");
list.add("/employee/logout");
list.add("/front/**");
list.add("/user/sendMsg");
list.add("/user/login");
registry.addInterceptor(interceptor).addPathPatterns("/**").excludePathPatterns(list);
}
}
注意:要加上注解@Configuration。前端放行js、css、图片、登录的html等,后端放行登录方法和退出方法等。
公共字段自动填充配置
#实现MetaObjectHandler元处理器
public class MyMetaObjectHandler implements MetaObjectHandler {
@Autowired
private HttpSession httpSession;
@Override
public void insertFill(MetaObject metaObject) {
metaObject.setValue("createUser",Long.valueOf(httpSession.getAttribute("id").toString()));
metaObject.setValue("updateUser",Long.valueOf(httpSession.getAttribute("id").toString()));
}
@Override
public void updateFill(MetaObject metaObject) {
metaObject.setValue("updateUser",Long.valueOf(httpSession.getAttribute("id").toString()));
}
}