lombok使用教程
lombok使用教程
Lombok 是一个用于简化 Java 编程的库,它通过注解来自动生成样板代码,从而减少了手动编写样板代码的繁琐。
@Getter 和 @Setter
自动为类中的字段生成 getter 和 setter 方法。
@Getter 和 @Setter 不具有可选参数。它们的作用是生成 getter 和 setter 方法,默认生成所有字段的 getter 和 setter。
@ToString
自动生成 toString() 方法。
**includeFieldNames**:是否包括字段名。
默认值:false
作用:设置为 true 时,生成的 toString() 方法会包含字段名,例如 "Person(name=John, age=30)"。
**exclude**:排除某些字段。
默认值:空数组
作用:指定要排除在 toString() 方法中的字段。例如,@ToString(exclude = "age") 将排除 age 字段。
**callSuper**:是否调用父类的 toString ...
Swagger Knife4j 使用总结
Swagger Knife4j 使用总结
使用 Swagger 和 Knife4j 来增强 API 文档和界面,方便开发者做一些简单的功能测试,也方便了前后端联调
Step 1. 导入依赖123456789101112<!-- https://doc.xiaominfo.com/docs/quick-start#openapi2 Swagger + Knife4j --><dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi2-spring-boot-starter</artifactId> <version>4.4.0</version></dependency><!-- Hibernate Validator for data validation --><dependency> <groupId>org.h ...
SQL必知必会-读书笔记(八)
SQL必知必会-读书笔记(八)GROUP BY
分组,可以和聚合函数配合,例如:
123456# 统计按照x_id分组后,每个分组的个数。如果不加 GROUP BY,相当于统计所有行的数量SELECT x_id, count(*) as x_num FROM your_tableGROUP BY x_id
GROUP BY子句可以包含任意数目的列,可以进行更精细的分组
不管有多少列,建立分组时,所有的列都是当成一个整体处理,所以不能从个别的列取回数据
GROUP BY子句的每个列都必须是检索列或有效表达式(不能是聚集函数),如果SELECT中使用了表达式,GROUP BY子句中也要指定相同的表达式,不能使用别名
大多数SQL不允许GROUP BY列带有长度可变的数据类型(MySQL允许,但是不建议,因为分组时处理字符数据比较慢)
除聚集计算语句外,SELECT的每一列都必须在GROUP BY子句中给出
如果分组中包含具有 NULL 值的行,则NULL会作为一个分组返回,如果列中有多行NULL值,它们将会被作为一个分组
GROUP BY必须出现在WHERE语句之后,O ...
Spring核心代码模块-总览
Spring核心代码模块-总览Spring 最主要的核心就是 IOC 容器,这个容器根据我们的配置文件创建了各种 Bean 且编织它们之间的依赖关系,管理这些 Bean 的生命周期。所以最核心的代码模块是:
spring-core:核心类库,包括资源访问等一些工具类,别的模块都会依赖此模块
spring-beans:对 Bean 的支持,包括控制反转和依赖注入,核心工厂 BeanFacotry 就在这个模块。
spring-context:Spring 的上下文,支持数据验证、国际化、事件传播等支持,ApplicationContet 就在这里,可以理解为运行时的 Soring 容器
基于上面的这些核心模块,Spring 也提供了很多重要的支持:
spring-aop:AOP 的支持
spring-jdbc:jdbc的支持
spring-orm: orm 的支持
spring-webmvc: mvc 的支持
SQL必知必会-读书笔记(七)
SQL必知必会-读书笔记(七)COUNT() 函数
COUNT(*) : 计算表中行的数目
COUNT(cloumn_name) : 计算column_name的行数,会忽略NULL
MAX() 函数
MAX() 函数会忽略表中的 NULL 值
MAX() 作用于非字符型数据时,返回排序后的最后面的行
MIN() 函数
MIN() 函数会忽略表中的 NULL 值
MIN() 作用于非字符型数据时,返回排序后的最前面的行
SUM() 函数
可以使用多个列的值计算 SUM,例如:SUM(column1 * column2)
SUM() 函数会忽略表中的 NULL 值
DISTINCT
DISTINCT 不能用于 COUNT(*)
DISTINCT 可以用于 MIN(),MAX(),但没有意义
MyBatis XML文件详解
MyBatis XML文件详解定义文件版本、编码、规范通常写在xml文件开头
12<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
定义命名空间定义这个xml文件对应到哪一个mapper接口文件上,namespace 建议写全路径名
正文部分可以定义各种 resultMap 和 CRUD的SQL语句
123<mapper namespace="com.jd.y.insight.domain.repository.mybatis.mapper.master.ext.IndustryCompanyRelationExtMapper"><!-- 正文 --></mapper>
定义result ...
MySQL查询时拼接列名
MySQL查询时拼接列名在 MySQL 中,拼接字段最常用的方法是使用 CONCAT() 函数和 CONCAT_WS() 函数。
使用 CONCAT() 函数CONCAT() 函数用于将多个字符串连接成一个字符串。如果任何一个参数为 NULL,CONCAT() 函数会将其视为空字符串并继续连接其他参数。
语法:1CONCAT(string1, string2, ..., stringN)
拼自定义字符串:12SELECT CONCAT('Hello, ', 'world!', ' How are you?') AS result;-- output:Hello, world! How are you?
拼字段:12SELECT CONCAT(first_name, ' ', last_name) AS full_nameFROM employees;
使用 CONCAT_WS() 函数CONCAT_WS() 函数与 CONCAT() 类似,但它允许你指定一个分隔符,将其插入到拼接的字符串之间。 ...
Spring 循环依赖详解
Spring 循环依赖详解什么是循环依赖循环依赖(Circular Dependency)是指两个或多个模块(组件、类、服务等)之间互相依赖,从而形成一个循环的依赖关系。
这种情况在软件开发中是比较常见的一个问题,尤其是在复杂的系统中。
为什么会出现循环依赖循环依赖通常是由于以下几个原因导致的:
模块间的紧密耦合:模块之间的耦合度过高,彼此依赖过于密切。
不合理的设计:系统设计时没有充分考虑模块的独立性和复用性。
单一职责原则的违反:模块的职责过于复杂,导致需要依赖多个其他模块来完成其功能。
循环依赖的问题
难以维护:模块之间的耦合度过高,修改一个模块可能需要修改多个相关模块。
难以测试:由于模块之间的依赖关系复杂,独立测试某个模块变得困难。
可能导致运行时错误:在某些情况下,循环依赖可能导致程序在运行时崩溃或出现异常,有时候甚至连编译的无法通过。
如何解决循环依赖使用构造器注入与Setter注入的结合使用构造器注入时,循环依赖会导致两个或多个bean无法实例化,因为每个bean在实例化时都需要另一个尚未实例化的bean。
Setter注入可以部分缓解这个问题,因为Spri ...
SQL必知必会-读书笔记(六)
SQL必知必会-读书笔记(六)LIKE 操作符
LIKE 只能用于搜索字符串
LIKE 可以使用通配符
LIKE 支持的通配符有:
‘%’ :任意数量任意字符
‘_’ :单一的任意字符
‘[JD]’ : ‘[…]’用于指定字符集
REGEXP 操作符REGEXP(也可以使用 RLIKE)用于更复杂的模式匹配,它支持正则表达式语法中的通配符:
**.**:表示任意单个字符。
1SELECT * FROM employees WHERE name REGEXP '^J.n$';
上述查询将返回名字是 “Jan”、”Jen”、”Jon” 等员工,但要求匹配的是完整的字符串。
**[ ]**:表示匹配括号内的任意字符。可以定义一个字符集或字符范围。
1SELECT * FROM employees WHERE name REGEXP '^[JH]en$';
上述查询将返回名字是 “Jen” 或 “Hen” 的员工。
**[^ ]**:表示匹配不在括号内的任意字符。
1SELECT * FROM employees WHERE nam ...
SQL必知必会-读书笔记(五)
SQL必知必会-读书笔记(五)AND 与 OR 执行顺序
和C语言等一众编程语言没有什么不同,在没有 ‘(‘ 和 ‘)‘ 时,SQL执行时也是先执行 AND 后执行 OR
IN 操作符为什么使用 IN 操作符
合法选项较多时,IN操作符更加清楚直观
IN 一般比 OR 执行得更快
IN 最大的优点是 IN 内部可以是一个子查询
NOT 操作符
NOT 操作符用于否定(取反)某一个查询条件
