spring 基础(2.5) 注解说明

1注解与xml的相应说明

  @EnableConfigurationProperties: 配置@ConfigurationProperties使用,在@EnableConfigurationProperties写入class名称,然后class中写入@ConfigurationProperties

  @SpringBootApplication:springboot的核心注解,目的是开启自动配置
  @PropertySource:指定加载配置文件
  @Configuration: 等价于<Beans></Beans>。用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
  @Bean:等价于<Bean></Bean>
  @ComponentScan:指定范围 等价于<context:component-scan base-package=”com.item.demo”/>
  @ConfigurationProperties: 主要用来把properties配置文件转化为bean(类)来使用的。

  @Mapper:目的就是为了不再写mapper映射文件、为了把mapper这个DAO交給Spring管理 、为了给mapper接口 自动根据一个添加@Mapper注解的接口生成一个实现类。

    @Insert("insert into student(sno,sname,ssex) values(#{sno},#{name},#{sex})")
    int add(Student student);

   @Results:当数据库字段名与实体类对应的属性名不一致时,可以使用@Results映射来将其对应起来。column为数据库字段名,porperty为实体类属性名,jdbcType为数据库字段数据类型,id为是否为主键。

    @Select("select * from student where sno=#{sno}")
    @Results({
         @Result(property = "sno", column = "sno", javaType = String.class,id=true),
         @Result(property = "name", column = "sname", javaType = String.class),
         @Result(property = "sex", column = "ssex", javaType = String.class)
    })
    Student queryStudentBySno(String sno);

 

目的就是为了不再写mapper映射文件

   1.1@Configuration  @Bean beans bean  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd" default-lazy-init="false">
  <bean id="student" class="domain.Student">
         <property name="id" value="11"/>
         <property name="age" value="22"/>
         <property name="name" value="jack"/>
     </bean>
     //扫描 com.item.demo包下所有的 带注解的文件
     <context:component-scan base-package=”com.item.demo”/>
</beans>


1.2需要导入的依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
</dependency>     


2四类主键类型注解

  @Component:组件注解,通用注解,被该注解描述的类将被loC容器管理并实例化,以下三个都是主键注解的细化,当不确当用哪一个时候,就可以用这个。
  @Controller:语义注解,说明当前类是MVC应用中的控制器类。将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化.
  @Service:语义注解,说明当前类是Service业务服务类。
  @Repository:语义注解,说明当前类用于业务持久层通常描述对应Dao类。

 

3model注解,

下面是在model的注解,在使用的时候,必须加上@Valid

@Null  被注释的元素必须为null
@NotNull  被注释的元素不能为null
@AssertTrue  被注释的元素必须为true
@AssertFalse  被注释的元素必须为false
@Min(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max,min)  被注释的元素的大小必须在指定的范围内。
@Digits(integer,fraction)  被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past  被注释的元素必须是一个过去的日期
@Future  被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式。
@Email 被注释的元素必须是电子邮件地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty  被注释的字符串必须非空
@Range  被注释的元素必须在合适的范围内

 

 

 

 

 

4注解

  @ResponseBody:它的作用简短截说就是指该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Object,它会以Json字符串的形式返回给客户端。对于Map返回则是JSON String,对于String则仍然是String。

  @RestController:=@Controller + @ResponseBody。

  @RequestMapping:在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求。【@RequestMapping(value = "/add", method = RequestMethod.GET)/

@RequestMapping(value = "/add"),指定请求方式之后只能额根据指定请求来,比如get。如果不写。则get和post都可以 @GetMapping("/add")@PostMapping("/add")】

  @Primary:常使用@Autowired, 默认是根据类型Type来自动注入的。但有些特殊情况,对同一个接口,可能会有几种不同的实现类,而默认只会采取其中一种的情况下 @Primary 的作用就出来了。只要被@Praimary标记,则spring ioc会自动去使用这个。

  @Autowired 注解,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。在使用@Autowired之前,我们对一个bean配置起属性时,如下

<property name="属性名" value=" 属性值"/>    

     @CrossOrigin 启用CORS(默认情况下,@CrossOrigin允许在@RequestMapping注解中指定的所有源和HTTP方法),其中@CrossOrigin中的2个参数: origins: 允许可访问的域列表 maxAge:准备响应前的缓存持续的最大时间(以秒为单位)。@CrossOrigin(origins = "http://localhost:9999", maxAge = 3600) 参考

  @TableLogic 实体类中属性加上@TableLogic,调用BaseMapper的deleteById(id)或者调用IService的removeById(id); 就会去修改值,而不是删除。同时数据库中字段的值必须存在(比如,默认,0未删除、1删除,如果字段没有0则修改失败,必须有0才会修改为1)

 效果:
        没有@TableLogic注解调用deleteById/removeById,直接删除数据。
            SQL:delete from table where id = 1
        有注解走Update方法
            SQL:Update table set isDelete = 1 where id = 1

@TableLogic注解参数
    value = "" 未删除的值,默认值为0
    delval = "" 删除后的值,默认值为1
    @TableLogic(value="原值",delval="改值")

 

 

 


posted @ 2021-01-19 17:41  楚景然  阅读(223)  评论(0编辑  收藏  举报