Cynicism Cynicism
首页
  • 前端学习笔记

    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript
    • JS设计模式总结
    • 小程序笔记
  • 后端学习笔记

    • 《JavaWeb》
    • 《SSM》
    • 《瑞吉外卖》
    • 《Git》
    • 《SpringCloud》
    • 《黑马点评》
    • 《Spring原理》
    • 《JVM》
    • 《Java并发编程》
    • 《学成在线》
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试
  • 常见问题
  • 实用技巧
  • 友情链接
实习
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Cynicism

Java后端学习中的IKUN
首页
  • 前端学习笔记

    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript
    • JS设计模式总结
    • 小程序笔记
  • 后端学习笔记

    • 《JavaWeb》
    • 《SSM》
    • 《瑞吉外卖》
    • 《Git》
    • 《SpringCloud》
    • 《黑马点评》
    • 《Spring原理》
    • 《JVM》
    • 《Java并发编程》
    • 《学成在线》
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试
  • 常见问题
  • 实用技巧
  • 友情链接
实习
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 招联金融
    • 1. 领域驱动设计(DDD)
    • 2. 全局异常处理
    • 3. 对象注入省略@Autowired注解
    • 4. 文件请求参数接收
    • 5. Git常用指令
    • 6. Mapper请求参数
    • 7. 策略模式
    • 8. 动态sql
    • 9. 枚举类型转换器
    • 10. spring注入list集合
    • 11. 同时上传表单数据和文件
    • 注意事项

招联金融

提示

本文主要记录了招联金融的暑期实习过程中的收获

# 1. 领域驱动设计(DDD)

领域驱动设计详解

DDD详解(建议阅读这篇)

DDD实战案例

# 2. 全局异常处理

通过@ControllerAdvice注解,在controller层统一处理异常,通过@ExceptionHandler注解,在controller层处理异常,通过@ResponseBody注解,在controller层返回json格式的异常信息。

# 3. 对象注入省略@Autowired注解

常规在对象上使用@Autowired注解,在spring容器中会自动注入对象。

@Autowired
private UserService userService;
1
2
  • 当在类上使用@RequiredArgsConstructor注解时,spring容器会自动注入对象。但需要用final修饰符修改注入的对象
  • 当在类上使用@AllArgsConstructor注解时,spring容器会自动注入对象。

# 4. 文件请求参数接收

当请求参数中存在文件Mutifile,不能使用@RequestBody注解,因为@RequestBody 主要设计用于处理序列化的数据格式,如 JSON,它能够将 JSON 数据转换为 Java 对象。然而,对于文件上传,应使用@ReququestParm或者@RequestPart注解

  • @RequestParam 用于接收标准的表单字段。
  • @RequestPart 用于接收 multipart/form-data 类型的请求体中的文件和非文件数据。

# 5. Git常用指令

# 6. Mapper请求参数

  • 简单的引用类型参数(Integer、String)
  • 自定义DTO(实体类)
  • 数组或集合:传递多个相同类型的参数

@Param注解主要用于区分不同的参数,动态SQL(条件查询、fen ye c中引用参数时需要使用@Param注解

interface BlogMapper {
  List<Post> selectPostsByTitleAndCategory(@Param("title") String title, @Param("category") String category);
   }
1
2
3

🔎 在使用 MyBatis 时,如果你需要同时传入一个 DTO(数据传输对象)实体类和其他单独的参数?
A:将DTO和其他参数一起放入一个Map中,然后在 Mapper 接口中接受 Map 类型的参数。在 XML 映射文件中,你可以通过键名访问这些参数。
B:对于DTO和其他参数都使用@Param注解

# 7. 策略模式

定义

策略模式 定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法独立于使用它的客户而变化。在 Spring 中,这通常涉及到使用依赖注入(DI)来注入不同的实现类,这些实现类都实现了相同的接口。

通过传入不同的 Bean 来利用同一个接口方法的不同实现,这主要体现了 策略设计模式(Strategy Design Pattern)的使用。

通过多态实现策略模式:父类的引用指向子类的实例,引用类型变量发出的方法调用的到底是哪个类中的方法,必须在程序运行期间才能确定

# 8. 动态sql

语法 说明
if 根据条件判断是否执行SQL语句(是否为空)
choose 选择一个分支执行SQL语句(类似于switch-case)
trim 去除SQL语句的前后空格(常用于where和set)
where 添加where关键字,可自动去除多余的and,使其符合sql语法规则
foreach 循环遍历集合
set 添加set关键字(更新操作),可自动去除多余的逗号,使其符合sql语法规则
bind 绑定变量

# 9. 枚举类型转换器

枚举类型转换器代码

# 10. spring注入list集合

笔记

spring在帮我们管理bean的时候,会帮我们完成自动注入,其中有一个比较特殊的类型:list。这篇笔记主要记录spring注入list集合的原理

public interface Rest {}

@Component
public class RestServiceImpl01 implements Rest{}

@Qualifier("restServiceImpl02")
@Component
public class RestServiceImpl02 implements Rest{}

@Component
public class OrderService {
    @Autowired
    //@Qualifier
    private List<Rest> restList;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

spring中,在使用@Autowired注解注入list集合的时候,并不会根据List类型去容器中查找,而是根据list集合的元素类型,从spring容器中找到所有的实现类,放在list集合中,然后注入到bean中

🔎那如果我们想要指定只注入部分bean怎么办?
💡在需要注入的集合和需要注入的类上添加@Qualifier注解

# 11. 同时上传表单数据和文件

@RequestPart接收

@RequestBody只能接收json格式的请求体

# 注意事项

  • 尽量只使用@GetMapping(查)、@PostMapping(增删改)
  • @GetMapping(查)请求不存在请求体,无法使用@RequestBody注解接受请求参数,应该使用@RequestParam注解接受请求参数
  • 若请求参数类型相同,可以使用Map接收前端参数,例如@RequestParam(value = "id", required = false) Map<String, Object> params
  • 禁止使用不明确的数字,例如0,1,2,3,4,5,6,7,8,9,使用常量代替
  • 尽量使用枚举类型代替字符串类型,枚举类型具有类型安全,字符串类型没有类型安全,容易出错
  • 使用try- catch-resources,自动关闭资源(输入流、输出流等),不正常关闭会导致系统崩溃
  • 避免使用for循环遍历查询到的数据记录,应在查询时一次性完成
  • 在Mybatis的mapper XML文件中,输入参数通常被当作字符串处理,因为它们被包含在XMl标签中,当你使用#{}占位符时,Mybatis会自动将输入参数转换成适当的JDBC类型
  • 继承closeable接口,必须在close方法中关闭资源,防止资源泄漏(或者使用try-catch-resources)自动释放
  • 尽量对前端的请求参数进行必要的校验(@Validated)
  • 一般使用redis作为缓存,不开启MyBatis的二级缓存
  • 当修改了多张数据表的数据时,应使用@Transactional注解,保证事务的完整性(例如批量删除)
  • mybatis-generator-maven-plugin插件可以快速生成数据表对应的 Mapper 接口和对应的 XML 映射文件,以及实体类 (Entity)
  • 时刻注意空指针异常
  • 判空条件尽量使用现有的方法,包括集合判空,字符串判空等
  • 响应类中的属性如果不是自定义的类,可以无需实现序列化接口,因为这些属性已经默认实现了序列化接口
  • 合并代码之前一定要先提交!!!
编辑 (opens new window)
上次更新: 2025/05/12, 04:51:03
最近更新
01
JVM调优
06-03
02
Linux篇
03-30
03
Kafka篇
03-30
更多文章>
Theme by Vdoing | Copyright © 2023-2025 Cynicism | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式