springBoot+mybatis Plus细节回顾

springBoot+mybatis Plus细节回顾
1.配置文件application.yml application-dev.yml application-prod.yml
  a.自定义相关的数据在配置文件中,用@Value 取值
  #{…} 用于执行SpEl表达式,并将内容赋值给属性
  ${…} 主要用于加载外部属性文件中的值
  #{…} 和${…} 可以混合使用,但是必须#{}外面,${}在里面,#{ '${}' } ,注意单引号,注意不能反过来
2.配置文件中配置完成 数据源 mybatisPlus pom文件中加入基础的起步依赖,projectlombok ,baomidou,springMVC等等
3.启动类加上相应的注解:@EnableScheduling定时任务 @EnableTransactionManagement事务管理 @ServletComponentScan实现@WebServlet、@WebFilter、@WebListener 的自动注册
3.配置 springMVC 类 WebMvcConfiguration implements WebMvcConfigurer,
  a.自定义资源映射addResourceHandlers
  b.拦截页面addViewControllers
  c.拦截器配置addInterceptors 配合session做登陆验证 此处需要自定义注解 来区分是app接口,因为外部接口(app iso android 和后台直接没有会话,不是长连接)
4.拦截异常并统一处理 @RestControllerAdvice  可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping中,
  自定义异常处理(全局异常处理)
    public class CommonException extends RuntimeException {

    private int code;

    public CommonException(String message){
        super(message);
    }

    public CommonException(int code,String message) {
        this(message);
        this.code = code;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }
 }
5.pc登陆 退出 session的存获取和清空
6.相关一下工具类的编写
  a.AesEncodeUtil 数据加密
  b.AliOssUtil 文件存储
  c.Base64Util 文件转化成base64字符串进行传输
  d.CaptchaUtil 验证码
  e.ContextUtil 获取当前用户相关的信息等
    1.注意:pc用户信息可以直接从session中获取
    2.注意:app的用户信息token存储在 ConcurrentHashMap (线程安全且高效的HashMap)先去里面找 没有在去数据哭根据token查询
  f.Result 通用返回类
7.定时任务通过 @Scheduled(fixedDelay = 1800 * 1000)实现 注意:为了不重复跑 只让固定IP的服务器跑
8.灵活使用集合, Arrays长度固定,
9.集合流式操作
  a.中间操作:
    filter(): 对元素进行过滤
    sorted():对元素排序
    map():元素映射
    distinct():去除重复的元素
  b.最终操作:
    forEach():遍历每个元素。
    reduce():把Stream 元素组合起来。例如,字符串拼接,数值的 sum,min,max ,average 都是特殊的 reduce。
    collect():返回一个新的集合。
    min():找到最小值。
    max():找到最大值。
10.对应好请后端接口对接方式
    a.  前端:method: 'post',
                        headers: {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"},
                        url: 'surveyInfo/saveSurveyInfo',
                        data: $.param({
                            jsonStr: JSON.stringify({
                                saveType: saveType,
                                surveyInfo: vm.surveyInfo
                            })

                        })  
        后端:String jsonStr接收,JSON.parseObject转化
    b.文件上传注意前端formData,请求头
      method: 'post',
                headers: {"Content-Type": undefined},
                transformRequest: angular.identity,
                url: 'xxx/xxxx' + param,
                data: formData 
     以及后端MultipartFile去接收。
11.listMap.forEach((key, val) -> {}Lambda 表达式

12.Mybatis#{}和${}的区别
    a. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
      
    b. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id,  如果传入的值是id,则解析成的sql为order by id.
      
    b. #方式能够很大程度防止sql注入。
      
    d.$方式无法防止Sql注入。

    e.$方式一般用于传入数据库对象,例如传入表名.
      
    f.一般能用#的就别用$.
        
    注意:MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

你可能感兴趣的:(springBoot+mybatis Plus细节回顾)