搭建后端服务
idea 配置
- server url : start.aliyun.com
- 本地 maven 配置
代码生成
renren-generator 地址
gitee.com/renrenio/re…
生成 common 模块代码
entity
import com.baomidou.mybatisplus.annotation.*;
import java.time.LocalDateTime;
@TableLogic
@TableField(fill = FieldFill.INSERT)
@TableField(fill = FieldFill.INSERT_UPDATE)
Mybatis Plus 配置
@EnableTransactionManagement
@Configuration
@MapperScan("com.kuge.mall.common.mapper")
public class MybatisPlusConfig {
/**
* 添加分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加
//interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbType
return interceptor;
}
}
自动填充create_time、update_time配置
@Component
public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
}
application.yml 配置
spring:
datasource:
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.245.128:3306/mall?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false
mybatis-plus:
global-config:
db-config:
logic-delete-field: is_del # 全局逻辑删除的实体字段名
logic-delete-value: 1 # 逻辑已删除值
logic-not-delete-value: 0 # 逻辑未删除值
enable-sql-runner: true # 开启 SqlRunner 以便执行原生 SQL
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #配置控制台打印完整带参数SQL语句
跨域配置
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
//1. 添加 CORS配置信息
CorsConfiguration config = new CorsConfiguration();
//放行哪些原始域
config.addAllowedOrigin("*");
//放行哪些请求方式
config.addAllowedMethod("*");
//放行哪些原始请求头部信息
config.addAllowedHeader("*");
//暴露哪些头部信息
config.addExposedHeader("*");
//2. 添加映射路径
UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
corsConfigurationSource.registerCorsConfiguration("/**",config);
//3. 返回新的CorsFilter
return new CorsFilter(corsConfigurationSource);
}
}
密码工具类
public class PwdUtils {
/**
* 加解密统一编码方式
*/
private final static String ENCODING = "utf-8";
/**
* 加解密方式
*/
private final static String ALGORITHM = "AES";
/**
* 加密模式及填充方式
*/
private final static String PATTERN = "AES/ECB/pkcs5padding";
/**
* 秘钥生成来源
*/
public static final String KEY = "SYANtfAYE5dEu7DE";
public static String encrypt(String plainText) {
try {
SecretKey secretKey = new SecretKeySpec(KEY.getBytes(ENCODING), ALGORITHM);
// AES加密采用pkcs5padding填充
Cipher cipher = Cipher.getInstance(PATTERN);
//用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
//执行加密操作
byte[] encryptData = cipher.doFinal(plainText.getBytes(ENCODING));
return Base64.getEncoder().encodeToString(encryptData);
} catch (Exception exception) {
throw new RuntimeException(exception);
}
}
}
数据库连接配置
useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
数据库主键类型配置
mybatis-plus:
global-config:
db-config:
id-type: auto