目录
前言
使用VS Code编写springboot代码需要安装的插件(个人习惯,仅供参考):
- Debugger for Java
- Spring Initializr Java Support
- Language Support for Java™ by Red Hat
- Maven for Java
- Spring Boot Extension Pack
- MybatisX
1.为了使用swagger方便调试,不验证权限
找到SecurityConfig文件
ruoyi-framework\src\main\java\com\ruoyi\framework\config\SecurityConfig.java
第一步
为了避免出现类似这种状况
{ "msg": "请求访问:/store/production/list,认证失败,无法访问系统资源", "code": 401 }
改这里
.antMatchers(
HttpMethod.GET,
"/",
"/*.html",
"/**/*.html",
"/**/*.css",
"/**/*.js",
"/profile/**",
"/**/**" // 在这加这个
).permitAll()
anonymous() 允许匿名用户访问,不允许已登入用户访问
permitAll() 不管登入,不登入 都能访问
第二步
为了避免出现这种状况
{ "msg": "获取用户信息异常", "code": 401 }
改这里
@EnableGlobalMethodSecurity(
prePostEnabled = false, // 改这个
securedEnabled = true
)
2.SQL相关
2.1 union、union all、or 效率对比
union
表链接后会利用字段的顺序进行排序,以此筛选掉重复的数据行,最后再返回结果。因此,当数据量很大时 union 效率很低
。
union all
相比 union,union all 在表链接时不会删除重复的数据行,直接返回表联合后的结果。因此,union all 执行效率要高很多,在不需要去重和排序时,更推荐使用 union all
。
or
or 用于 SQL where 子句中,SQL 脚本可读性更高,但是它会引起全表扫描,根本不走索引查询。所以通常情况下,union [all] 查询会利用索引进行查询,执行效率要高于 or
。
* 但是当 or 条件中查询列相同,or 的执行效率要高于 union。
2.2 exists、in 使用场景
由于 SQL 做子查询最优方案是小表驱动大表。
对于 in 来说是子查询表驱动外表,当子查询表数据少于主表数据
时推荐使用。
而 exists 是外表驱动子查询表,因此当外表数据少于子查询表
时更推荐使用。
2.3 in、or 效率对比
如果in和or所在列有索引(包括主键索引)
,or和in没啥差别,执行计划和执行时间都几乎一样
。
如果in和or所在列没有索引
的话,随着in或者or后面的查询条件的增加,in的耗时不会有太大的增长;但是or的耗时基本上是指数级增长,所以优先选用 in
。