随笔分类 - 软件开发 / Web 后端
后端开发大量的是与数据库查询互动以解决相对的领域模型。必须考虑到的是怎样完成作用、数据信息浏览、服务平台的可靠性。需要会写Java编码,会写SQL句子,会做简易的概念模型设计,会Spring和iBatis,掌握一些策略模式。
摘要:@Transactional 和锁一起用会出现一些问题,具体请看 Spring Boot 锁。 tip:[start] @Transactional 是 Spring AOP 切入编程的一种,切入点有三种基本的通知类型,如 @Before、@After、@Around,因此,事务开启在方法执行之前,
阅读全文
摘要:单例 Spring Bean 默认作用域是单例的,也就是说 A、B、C 三个类被注入到 IoC 容器中之后,假如 B、C 都依赖了 A,那么它们依赖的 A 在内存中都是同一个对象。 容器中只有一个A的实例,B和C都将引用同一个A对象。 原型 如果想要每次注入都创建一个新的 A 实例,可以考虑将 A
阅读全文
摘要:file:[SwaggerConfig.java] /** * @description: * @package: com.bleuon.config * @author: zheng * @date: 2023/10/13 */ @Configuration public class Swagge
阅读全文
摘要:@EnableGlobalMethodSecurity(prePostEnabled = true) 已经被弃用了,最新的是:@EnableMethodSecurity。 file:[SecurityConfig.java] @Configuration @EnableWebSecurity add
阅读全文
摘要:如果遇到 Get 请求参数过多的情况,使用 @RequestParam 不合适了,太多了也不好搞,而且如果遇到了增加或修改的情况,Service 层方法也要改变。 优化 Get 请求参数过多的方法有三种: Service 接收 Map 对象,在 Controller 层把这些 URL 参数封装到 M
阅读全文
摘要:子查询 什么时候用到子查询? 比如,A 实体类下面有一个属性 b,b 的类型是实体类 B,B 下面又有一个一对一的实体类 C。这种多级嵌套关系,就要用到子查询。一层嵌套应该是可以用多表联查直接映射。 对于上面说的情况,inner join、left join 多表联查可能查询出来的结果不完整或者 n
阅读全文
摘要:通过 Lombok 自动生成的 getter、setter 可能与 Mybatis 自动映射实体类的 getter、setter 存在差异,这个问题在 Spring 反序列 Body 数据也存在,详细查看视频:我为什么不喜欢lombok,这个问题大家怎么看,高级分析技巧。 @Data @NoArgs
阅读全文
摘要:接口的概念 接口(interface)是一种在面向对象编程中非常重要的概念,它有助于提高程序的可扩展性和灵活性。以下是接口如何体现程序高扩展性的几个方面: 分离接口与实现:接口定义了类应该具备的行为,但不提供具体的实现细节。这使得你可以将接口与其实现分离开来。当你需要更改或扩展程序的功能时,你可以创
阅读全文
摘要:问题描述 如上图所示,在加入了 @MapperScan 注解之后就出现了这个问题。 file:[src/java/config/MybatisConfig.java] @Configuration @MapperScan("com.example.iocdi") public class Mybat
阅读全文
摘要:# 错误案例 使用 query 函数查询,链式的结尾处使用 one 函数执行查询操作。 ```java super.query().one(); ``` 查看源码,最后一个 one 函数里面会执行一个 exectue 函数。使用 update 链式的结尾处没有类似 one 函数,但是提供了一个 ex
阅读全文
摘要:在 Navicate 中,设计表,设置字段为 datetime 类型。
阅读全文
摘要:# 过滤器 Token 验证过滤器,如果没有携带 Token 说明没有登录,或服务器没有颁发合法的 Token 给客户端。 ```java file:[TokenFilter.java] public class TokenFilter extends HttpFilter { @Override
阅读全文
摘要:```xml INSERT INTO orders(user_id, total, location, holder_phone, holder_name) VALUES (#{user_id}, #{total}, #{location}, #{holderPhone}, #{holderName
阅读全文
摘要:引入说明 file:[pom.xml] <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.0</version>
阅读全文
摘要:# Spring Security [Spring Security](https://docs.spring.io/spring-security/reference/servlet/architecture.html) 依赖导入之后,再次访问我们编写的接口就要求我们登录获取 [JSESSIONI
阅读全文
摘要:Cookie 客户端登录之后,假如是管理员,拥有所有权限,本次登录之后,这个角色以及权限保存在哪里? HTTP 是无状态的,每次服务器收到的请求都不知道你是哪个一个客户端(浏览器)。可以保存到 localStorage,但是每次发起请求时需要在代码层面上为成百上千的接口显式地加上这一段吗?HTTP
阅读全文
摘要:导入依赖 file:[pom.xml] <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.6</vers
阅读全文
摘要:# UnitedApiPathProps ```java file:[UnitedApiPathProps.java] import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProper
阅读全文
摘要:业务需求 如果一张表的字段非常多,一次性更新的字段也非常多,写 Mybatis XML 是非常痛苦的事情。我们可以取消实体类,通过 Map 代替实体类接收前端传递过来的 JSON 数据。 但是,会遇到一个问题,数据库的字段命名和 JS、JSON 等命名不一样,一个是下划线,一个是驼峰命名法。 所以,
阅读全文
摘要:# LEFT JOIN `LEFT JOIN`(左连接)操作用于从左边的表(通常是第一个表)中选择所有记录,同时与右边的表(通常是第二个表)进行匹配。如果右边的表中没有与左边表中的记录匹配的行,那么结果中将会包含 NULL 值。 ```sql file:[外连接] SELECT * FROM tab
阅读全文