D2.Springboot几个注解

本文介绍了SpringBoot中的重要注解,如@SpringBootApplication的组合功能,@EnableAutoConfiguration的自动配置,以及@ComponentScan和@Autowired在组件管理和依赖注入中的作用。此外,还提到了@Repository、@Service、@MapperScan和@Override的用途。

开头

SpringBoot有以下几个重要的注解:

@SpringBootApplication:这是一个组合注解,做了标识配置、自动配置、开始扫描注解,就是
      @SpringBootConfiguration(标记当前类为配置类)
      @EnableAutoConfiguration(启用自动配置)
      @ComponentScan(扫描注解)
      这个注解用在Spring Boot的主类上,标识是个Spring Boot应用。


@EnableAutoConfiguration:允许Spring Boot自动配置注解,开启这个注解之后,Spring                                                    Boot就能根据当前类路径下的包或者类来配置Spring Bean。


@ComponentScan:组件扫描。让spring Boot扫描到@Component、@Controller、                                              @Service等这些注解的类,把这些类注册为Bean。


还有其他注解,如@Autowired、@Repository、@Service等,它们各自在SpringBoot中有各自的重要作用。

@Autowired,自动装配

       发现找到多个相同类型的bean,那么就会按照bean的名称进行匹配。如果找不到,运行的时候就会抛出异常。

       这个时候我们可以使用@Qualifier注解或者@Primary注解解决这个问题。

@Repository,Dao层

       标注访问数据库层的类(Dao层)。它表示一个仓库,主要用于封装对于数据库的访问。其实现方式与@Component注解相同,只是为了明确类的作用而设立

@Service,业务层

       用于标注业务层的类。它是一个特殊的@Component,用于创建一个Bean,这个Bean会被自动注入到其他类中。简单地说,@Service注解用于声明一个服务类,告诉Spring这个类是一个服务类,需要Spring进行管理。


@ComponentScan ,扫描组件

自动注册成 Spring 组件,去找 @Component、@Service、@Repository这些注解的组件


@MapperScan,扫描Mapper

如MyBatis的Mapper 接口,自动注册成为数据库的 Spring Beans。

@Override,重写方法

      指定重写父类的一个方法。类去实现接口方法时,使用@Override注解可以帮助编译器检查是否正确地实现了这些方法,

      不加也没报错,但能让编译器在早期阶段捕获可能的错误,而不是等到运行时才发现。而且符合阅读、增加兼容性(也可以想兼容再加?)

在 PostgreSQL 中,`UTL_RAW.CAST_TO_RAW` 是一个用于将 `VARCHAR2` 类型的数据转换为 `RAW` 类型的函数,通常用于处理二进制数据或字节流。该函数在比较两个表(D1 和 D2)的多个字段时,可以将字段拼接后转换为 `RAW` 类型,以确保数据在二进制级别上进行精确比较。然而,使用过程中需要注意字段名的正确性、拼接顺序以及函数的使用场景。 ### 字段拼接与转换 在进行字段拼接时,可以使用 `||` 操作符将多个字段连接为一个字符串,然后通过 `UTL_RAW.CAST_TO_RAW` 函数将其转换为 `RAW` 类型。例如: ```sql SELECT UTL_RAW.CAST_TO_RAW(D1.col1 || D1.col2 || D1.col3) AS d1_raw, UTL_RAW.CAST_TO_RAW(D2.col1 || D2.col2 || D2.col3) AS d2_raw FROM D1 JOIN D2 ON D1.id = D2.id; ``` 上述查询将 D1 和 D2 表中的字段拼接后转换为 `RAW` 类型,以便后续进行比较。 ### 字段名错误处理 在实际操作中,需要确保字段名正确无误。如果字段名拼写错误或大小写不一致,可能导致查询失败或结果不准确。例如,如果字段名应为 `col1` 但误写为 `Col1` 或 `COL1`,可能会导致查询无法找到正确的列,从而引发错误。因此,在编写查询时,务必仔细检查字段名的拼写和大小写是否与数据库中的定义一致。 ### 拼接顺序问题 字段拼接的顺序对最终结果有直接影响。如果拼接顺序不一致,即使字段内容相同,转换后的 `RAW` 值也会不同。例如,`col1 || col2` 和 `col2 || col1` 的结果是不同的,因此在进行比较时,必须确保两个表中的字段拼接顺序一致。 ### 使用场景与注意事项 1. **数据一致性**:确保字段内容在拼接前是相同的,避免因字段内容差异导致 `RAW` 转换结果不同。 2. **编码问题**:如果字段内容涉及多语言字符集(如 UTF-8),需要确保转换过程中使用正确的编码格式。例如,使用 `CONVERT` 函数将字符转换为目标编码后再进行 `RAW` 转换。 3. **性能优化**:在处理大量数据时,`UTL_RAW.CAST_TO_RAW` 可能会影响查询性能。建议在必要的情况下使用该函数,并考虑对查询进行优化,例如添加索引或分批次处理。 4. **错误处理**:在查询中加入错误处理机制,确保在字段名错误或数据类型不匹配时能够捕获异常并提供友好的错误提示。 ### 示例查询 以下是一个完整的示例查询,展示如何比较两个表 D1 和 D2 的多个字段,并使用 `UTL_RAW.CAST_TO_RAW` 进行转换: ```sql SELECT D1.id, UTL_RAW.CAST_TO_RAW(D1.col1 || D1.col2 || D1.col3) AS d1_raw, UTL_RAW.CAST_TO_RAW(D2.col1 || D2.col2 || D2.col3) AS d2_raw, CASE WHEN UTL_RAW.CAST_TO_RAW(D1.col1 || D1.col2 || D1.col3) = UTL_RAW.CAST_TO_RAW(D2.col1 || D2.col2 || D2.col3) THEN 'Match' ELSE 'Mismatch' END AS comparison_result FROM D1 JOIN D2 ON D1.id = D2.id; ``` 该查询通过比较 D1 和 D2 表中字段拼接后的 `RAW` 值,判断数据是否一致,并输出比较结果。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值