SpringBoot和MyBatis常见注解

发布于:2023-01-22 ⋅ 阅读:(13) ⋅ 点赞:(0) ⋅ 评论:(0)

目录

一、Sping相关注解 

用于启动类上的注解

用于普通控制器上面的注解

Rest风格的控制器上面的注解

用于Service上的注解

用于Mapper接口中的注解

配置相关的注解

IOC注解(控制反转,让扫描器去发现,注册Bean到IOC容器)

DI注解(依赖注入)

AOP注解(面向切面编程)

Spring事务管理注解

二、Lombok相关注解 

三、MyBatis相关注解

用于启动类上的注解

用于实体类的注解


面向注解编程

一、Sping相关注解 

用于启动类上的注解

        @SpringBootApplication        

          是一个复合注解  由这三个注解复合而成

@SpringBootConfiguration
        作用与 @Configuration 一样 让当前类成为一个配置类
@EnableAutoConfiguration  
        开启自动化配置      
@ComponentScan     开启IOC容器扫描器 自动扫描与当前启动类同级或下级的所有组件类

@MapperScan("")  MyBatis相关注解
 配置Mapper接口所在的包路径,MyBatis基于动态代理模式 在运行时代理所有Mapper接口中方法的实现

用于普通控制器上面的注解

@Controller

        让当前类被扫描器发现,并注册对象到IOC容器,并且对象被当作控制器使用

@RequestMapping

        映射类或方法的请求URL地址,类可以有地址也可以没有,类的url地址是当前类中所有方法url地址的前缀。给类映射url地址的时候不可以指定请求方式,给方法映射url地址的时候可以指定请求方式为get或post,如果不指定默认是get,url地址和请求方式要全局唯一

@ResponseBody        

        将控制器方法返回的结果直接转化为json格式,然后放到响应报文中进行返回 这样控制器方法只返回数据,不用转发到jsp,它是和ajax发起的http请求一起使用的

@RequestParam

        用于修正参数名,设置参数是不是必须的

Rest风格的控制器上面的注解

@RestController

        定义一个rest风格的控制器

         控制器中所有的方法都默认使用了@ResponseBody注解,只返回数据,不作转发和重定向

@GetMapping        不能映射类

@PostMapping       不能映射类

@PutMapping         不能映射类

@DeleteMapping      不能映射类

@PathVariable        用于rest风格的url地址 从url地址的占位符中取值赋给参数

 

用于Service上的注解

  @Service

        让service类被IOC容器发现

用于Mapper接口中的注解

 @Param

        当接口中的方法有多个参数的时候,需要用@Param注解修正参数名字,在Mapper.xml文件中根据@Param注解修正后的名字进行取值

配置相关的注解

@Configuration

        让任意一个类成为一个配置类

@Bean

        用于配置类中的方法,将方法返回的对象注册到IOC容器中

@Value("${配置名}")

        用于读取application.propertis核心配置文件,根据配置名读取配置值,并把值赋给成员变量

IOC注解(控制反转,让扫描器去发现,注册Bean到IOC容器)

@Controller  (用于控制器)

@Service   (用于Service)

@Repository(用于dao) 用不到了

@Component     (用于普通组键类,例如用于AOP类)

@Configuration(用于配置类)

@Scope 

        用于设置Bean的作用域

        @Scope(“singleton”)单例模式

                在启动时就会发现和注册Bean放到IOC容器,在使用时不会创建新的Bean

        @Scope(“prototype”)   原型模式

                在启动时不会发现和注册Bean到IOC容器,在使用时每次都会创建新的Bean

DI注解(依赖注入)

@Resource        

        jdk提供的

@Autowried

        框架自带的

AOP注解(面向切面编程)

@Aspect

        定义一个AOP切面类

@Pointcut ("execution(* com.iweb.springbootshop.controller.*.*(..))")

        定义一个切面表达式,根据表达式寻找被AOP代理增强的目标方法

        

@Before        

        定义一个前置代理增强的方法

@AfterReturning

        定义一个返回时代理增强的方法

@AfterThrowing

        定义一个抛出异常时代理增强的方法

@After

        定义一个后置代理增强的方法

@Around

        定义一个环绕代理增强的方法

Spring事务管理注解

@Transactional

       1. 可以用于类也可以用于方法,如果用于类则类中所有方法都会开事务执行,用于方法是单个方法开事务执行

        2.可以用于Controller类,也可以用于Service类,或者其他操作数据库的类

@Transactional(rollbackFor = Exception.class

       3.必须指定rollbackFor=某个异常类型.class,表示当执行过程中发生这种异常时进行回滚,不发生则执行提交

        4.事务隔离级别默认是数据库的默认隔离级别 可以通过isolation设置 取值是枚举类型

        @Transactional(rollbackFor = Exception.class,isolation=isolation.DEFAULT)

        5.可以通过propagation指定事务传播机制,取值是Propagation枚举类型

 

 

二、Lombok相关注解 

@Data

        用于自动在字节码中生成getter和setter  toString{ }  重写toString equals hashcode方法

@Slf4j

        用于在字节码中生成一个全局的静态常量log,用于打印日志

三、MyBatis相关注解

用于启动类上的注解

@MapperScan("")
        配置Mapper接口所在的包路径,MyBatis基于动态代理模式 在运行时代理所有Mapper接口中方法的实现

用于实体类的注解

@TableName        映射表名

@TableId              映射表中的主键ID

@TableFieId          映射表中的字段

如果实体类中类名和属性名完全遵守驼峰命名规范,

数据库表名和字段名完全遵守全小写+下划线连字符规范,

那么就不需要使用@TableName和@TableFieId   进行手动映射 框架会自动映射


网站公告

欢迎关注微信公众号

今日签到

点亮在社区的每一天
签到