java
mybatis plus 查询构造器
https://mybatis.plus/guide/wrapper.html#alleq
spring boot 配置文件多环境
https://blog.csdn.net/davis2015csdn/article/details/75220046
响应体 Header
https://www.baeldung.com/spring-rest-http-headers
注解全介绍
https://cloud.tencent.com/developer/article/1507070
分页 Header 构造
https://www.baeldung.com/rest-api-pagination-in-spring
https://www.javadevjournal.com/spring/rest-pagination-in-spring/
对 Mybatis 的吐槽
https://zhuanlan.zhihu.com/p/45044649
决策:
包名中有多个单词组成的,要用下划线连接吗?
全部用小写,并且不包含下划线(参考谷歌)。例如 helloworld配置文件使用 properties 还是 yml?
使用 yml,结构清晰,易读如何依据环境来获取不同的配置文件?
application.yml 中有 spring.profiles.active 可以配置。
如配置为 dev,则使用文件 application-dev.ymlBean 使用 xml 配置还是使用注解?
使用注解。依赖注入使用何种方式?
Service 使用字段注入,并添加 set 注入方式
Controller 使用方法参数注入
构造器注入会使得在为 Service 添加新的依赖时,也必须修改测试类。不支持 Controller 方法参数的注入
多数据源
使用 dynamic-datasource-spring-boot-starter ,要使用 2.5.6,最新版本配置有问题。使用 2.5.6 必须在配置文件里加上:1 2
#去除druid配置 spring.autoconfigure.exclude=com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
mybatis 配置
mapper 路径
mybatis-plus.mapper-locations=classpath:sqlMapperXml/*Mapper.xml
依赖注入
https://www.cnblogs.com/joemsu/p/7688307.html
https://spring.io/blog/2007/07/11/setter-injection-versus-constructor-injection-and-the-use-of-required/
避免使用字段注入。可选构造函数注入和 set 方法注入。
构造函数注入的字段可用 final 修饰,因此该方法通常用于那些必要的注入(或者说几乎每个方法都会用到的那种)。
set 方法注入的字段不能用 final 修饰,因此该方法通常用于那些非必要的注入。依赖注入对测试的影响:
构造函数的注入每次增加时,都需要修改测试类,在创建服务类的地方添加参数。但通常情况下,一个类不会经常地添加其他依赖,所以这不是个大问题。
set 方法仅需要在使用这个服务类的测试调用 set 。结论是:
如果是 Controller 这种无需单元测试的,直接使用构造函数注入
对于 Service 这种,优先使用构造函数注入。如果是有多种实现的接口或者那种只有少数地方用到的类,则选择 set 注入。返回 created 的 path
mybatis plus 的 mapper.xml 要放在 resource 里面,并且和 Mapper.java 有相同的目录结构
mybatis 的 ResultMap 支持将表字段映射到另一个类的字段,并且 ResultMap 可以不用处理两者的关联关系
这意味着可以映射到值对象而不是另一个实体 映射方式为:1 2 3 4 5 6 7
<resultMap id="xxxx" type="xxx"> <id column="id" property="id"> <result column="name" property="name"> <sssociation javaType="xxx2" property="displayName"> <result column="aliases" property="displayName"> </association> </resultMap>
mybatis 的 ResultMap 只能在 xml 里面指定使用。如果想用 mybatis plus 的 lambda 表达式查询也能得到相同的映射,需要在 @TableName 里面加上 resultMap = “BaseResultMap”
mybatis plus 的 TableField 仅对 lambda 有效,不影响使用 xml 定义的查询结果。
可以完全抛弃 TableField,只要用上 @TableName 的 resultMap 就能得到正确的映射