SpringBoot注解

实体类

@Data:注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法

@AllArgsConstructor 添加一个全参构造函数

@NoArgsConstructor 创建一个无参构造函数 构造函数:初始化对象,为对象成员变量赋初始值。 User a = new User();(无参初始化)

@Builder 建造者模式。简单来说,就是一步步创建一个对象 https://www.jianshu.com/p/d08e255312f9

@SupperBuilder 继承时,使子类可以获取到父类的成员属性进行builder构造 注意事项

Mapper层

注解方式配置mybatis映射,一般使用Mapper结合以下四种注解(不用配置mapper.xml文件了)。

@Mapper 给接口自动生成一个实现类,由Mybatis创建并将其实现类对象存储到spring容器中。 mybatis的注解 dao层

@Insert 返回值为插入数据库的条数,可以用int(建议用int,避免null引起空指针)/Integer。

@Delete 返回值为删除的数据条数

@Update 返回值为数据库中匹配条数(不论最终是否对数据进行了修改,只要某条记录符合匹配条件,返回值就加1),但是可以近似理解为更新的行数。

@Select

  • 查到一条记录,直接返回查询结果。 ⚠️必须指定返回值类型:常用类型/包装类/自定义类型,不能返回Boolean类型(查到了返回true,没查到返回null,会报错)
  • 查到多条记录,返回用List接收。 ⚠️Select通过selectone方法查询,默认是返回一条记录的,即查到多条记录时会报错。

@Options(useGeneratedKeys=true,keyProperty="id") 设置对象中自增主键"id"的值(insert一条记录时,会返回该记录的id,获取时通过实体类的对象获取),例如:

datasetMapper.insertDataset(dataset);
Integer datasetId = dataset.getId();

@SelectProvider注解详解:@Select和@SelectProvider不能同时使用

@Param("name") String name 自定义参数名字。方法有多个参数时,给参数定义名字来代替顺序下标0,1,2,3....的形式,否则数据库找不到参数会报错。

  • ✅无论你传的参数是什么样的,最后mybtis都会将你传入的转换为map的。当我们要传入多个参数时,直接给与map类型 / 多个参数分别传入

@Results  用于在结果映射(Result Mapping)中定义多个 @Result 注解。它主要用于将 SQL 查询结果映射到 Java 对象中,以实现从数据库到对象之间的转换。 

@Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。

用法:https://blog.csdn.net/cherlshall/article/details/80950150

Service层

@Service 注在类上,标注业务层组件,将这个类交给Spring容器管理,spring容器为他创建对象(实例化)。

@Repository 持久层

@Controller 控制层

@Component是任何Spring管理组件的通用构造型,可以将类自动检测并注册为 Spring 应用上下文中的 Bean。

@Autowired注解

  • Spring提供的注解

  • 按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用

@Resource注解

  • JDK提供的注解

  • 默认按名称装配。名称可以通过@Resource的name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。

Controller层

@RestController 注在类上,@Controller和@ResponseBody注解的组合

  • 1. 有Controller的作用,定义一个控制器类
  • 2. 有ResponseBody作用,将此类下所有成员方法的返回结果转换成json格式(入参不转换)

@RequestMapping("/test")。 注在类/方法上,用于将 HTTP 请求映射到具体的处理方法上。

  • 可以用@RequestMapping(method=RequestMethod. GET/POST )映射对应类型的请求。 https://www.cnblogs.com/SpaceKiller/p/12312344.html
  • produces:指定返回内容的类型 (Content-Type),例如application/json, text/html;
  • consumes: 指定请求的提交内容类型

@GetMapping 将HTTP GET请求映射到特定处理程序方法

@PostMapping 将HTTP POST请求映射到特定处理程序方法

⚠️Restful风格时,知道需要的是哪种请求时,可以使用相应的Mapping比较好。

请求——获取前端传来http请求中的各类信息(用在方法里)

以下几种注解是用来接收前端传递给后端的数据

@RequestHeader 获取请求头中的数据

@RequestBody 获取请求体中的数据

  • 只能有一个,因为只有一个请求体
  • 前端的request header中accept类型为 Application/json ;
  • 不能用于GET请求中,因为没有HttpEntity

@PathVariable("name") 获取url中的数据(路径参数

@RequestParam("name") String name 获取查询参数的值;

  • 可以有多个,每个分别接收 https://www.cnblogs.com/zhlblogs/p/9553491.html
  • 适用于GET、POST请求
  • value,请求参数的别名,如果不设置则会默认为参数名
  • required,是否必传参数。默认为true
  • defaultValue,参数默认值,在请求参数未提供时设置一个默认值
  •     public String greet(@RequestParam(value = "name", required = false, defaultValue = "World") String name,
                            @RequestParam(value = "age", required = false, defaultValue = "0") int age) {}

响应——返回数据给前端(用在方法上)

@ResponseBody 将controller中方法的返回对象的格式转换为json/XML,写入到response对象的body区。

  • 可以用@RestController替代

Test类

通过@RunWith 和 @SpringBootTest启动spring容器

@RunWith (SpringRunner.class) 就是一个运行器,让测试运行于Spring测试环境。
@SpringBootTest (classes = {ApplicationLoader.class}) 加载ApplicationContext,启动spring容器。

@Test 标明测试方法

配置类

@Configuration 注在类上,告诉Spring boot这是一个配置类

@Bean 注在方法上,一般标明返回的对象直接被Spring管理起来

  • @Bean("tom") 自定义组件名

其他

@PostConstruct 被注解的方法,在对象加载完所依赖的组件后才执行,并且只执行一次。

  • 通常一些初始化的类上会使用该注解

@Value("${sso.client.id}") 变量替换,把配置文件的属性读进来

  • @Value("张三") 把常量注入到变量中

@Slf4j:使用@Slf4j以后,默认的Slf4j对象就是log,所以使用时候可以直接log.info()、log.error()……

@SuppressWarnings:对代码元素内部的某些警告保持静默。 

@SneakyThrows 自动捕获并处理异常(使用的是骗过JVM的方式,并没有处理?)

@Deprecated 废弃(类/方法……)

参考资料

参考:MyBatis中Mapper的返回值类型(✅)

https://www.cnblogs.com/cc11001100/p/7811257.html

posted @   zhegeMaw  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示