后端笔记

412 阅读2分钟

搭建后端服务

idea 配置

  1. server url : start.aliyun.com
  2. 本地 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