spring及boot注解

持续更新

@RequiresPermissions

验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时。

@PostMapping、@GetMapping

@GetMapping 注解已经默认封装了@RequestMapping(method = RequestMethod.GET)

@PostMapping( "/system/user")
等价于@RequestMapping(value = "/system/user",method = RequestMethod.POST)

@Column

属性

  • name
用来标识实体类中属性与数据表中字段的对应关系
 /**
     * (Optional) The name of the column. Defaults to 
     * the property or field name.
     */
    String name() default "";
  • unique

表示该字段是否为唯一标识,默认为false。如果表中有一个字段需要唯一标识,则既可以使用该标记,也可以使用@Table标记中的@UniqueConstraint。

 /**
    * (Optional) Whether the property is a unique key.  This is a 
    * shortcut for the UniqueConstraint annotation at the table 
    * level and is useful for when the unique key constraint is 
    * only a single field. This constraint applies in addition 
    * to any constraint entailed by primary key mapping and 
    * to constraints specified at the table level.
    */
   boolean unique() default false;
  • nullable

表示该字段是否可以为null值,默认为true。

/**
     * (Optional) Whether the database column is nullable.
     */
    boolean nullable() default true;
  • insertable

表示在使用“INSERT”脚本插入数据时,是否需要插入该字段的值。默认为true

 /**
     * (Optional) Whether the column is included in SQL INSERT 
     * statements generated by the persistence provider.
     */
    boolean insertable() default true;
  • updatable

表示在使用“UPDATE”脚本插入数据时,是否需要更新该字段的值。insertable和updatable属性一般多用于只读的属性,例如主键和外键等。这些字段的值通常是自动生成的。

/**
     * (Optional) Whether the column is included in SQL UPDATE 
     * statements generated by the persistence provider.
     */
    boolean updatable() default true;
  • columnDefinition
 /**
     * (Optional) The SQL fragment that is used when 
     * generating the DDL for the column.
     * <p> Defaults to the generated SQL to create a
     * column of the inferred type.
     */
    String columnDefinition() default "";
  • table

表示当映射多个表时,指定表的表中的字段。默认值为主表的表名。

/**
     * (Optional) The name of the table that contains the column. 
     * If absent the column is assumed to be in the primary table.
     */
    String table() default "";
  • length

表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符。

 /**
     * (Optional) The column length. (Applies only if a
     * string-valued column is used.)
     */
    int length() default 255;
  • precision、scale

precision属性和scale属性表示精度,当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数

 /**
     * (Optional) The precision for a decimal (exact numeric) 
     * column. (Applies only if a decimal column is used.)
     * Value must be set by developer if used when generating 
     * the DDL for the column.
     */
    int precision() default 0;

    /**
     * (Optional) The scale for a decimal (exact numeric) column. 
     * (Applies only if a decimal column is used.)
     */
    int scale() default 0;

@Table

属性

  • name:

用来命名 当前实体类 对应的数据库 表的名字

@Table(name = "aqjy_px")
  /**
     * (Optional) The name of the table.
     * <p> Defaults to the entity name.
     */
    String name() default "";
  • catalog

指定数据库名称,默认为当前配置的数据库

/** (Optional) The catalog of the table.
     * <p> Defaults to the default catalog.
     */
    String catalog() default "";
  • schema

指定数据库的用户名 ,默认为当前配置的用户 root

/** (Optional) The schema of the table.
     * <p> Defaults to the default schema for user.
     */
    String schema() default "";
  • uniqueConstraints

用来批量命名唯一键 其作用等同于多个:@Column(unique = true)

 /**
     * (Optional) Unique constraints that are to be placed on 
     * the table. These are only used if table generation is in 
     * effect. These constraints apply in addition to any constraints 
     * specified by the {@link Column} and {@link JoinColumn} 
     * annotations and constraints entailed by primary key mappings.
     * <p> Defaults to no additional constraints.
     */
    UniqueConstraint[] uniqueConstraints() default {};

@Id

标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。

/**
 * Specifies the primary key property or field of an entity.
 *
 * <pre>
 *   Example:
 *
 *   &#064;Id
 *   public Long getId() { return id; }
 * </pre>
 *
 * @since Java Persistence 1.0
 */
@Target({METHOD, FIELD})
@Retention(RUNTIME)

public @interface Id {}

@GeneratedValue

@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键(JPA要求每一个实体Entity,必须有且只有一个主键),

@GeneratedValue和@Id一起来标注主键

  • strategy
@Target({METHOD,FIELD})      
    @Retention(RUNTIME)      
    public @interface GeneratedValue{      
        GenerationType strategy() default AUTO;      
        String generator() default "";      
    }  

/**
     * (Optional) The primary key generation strategy
     * that the persistence provider must use to
     * generate the annotated entity primary key.
     */
    GenerationType strategy() default AUTO;
  • generator

generator属性的值是一个字符串,默认为"",其声明了主键生成器的名称(对应于同名的主键生成器@SequenceGenerator和@TableGenerator)。
添加链接描述

/**
     * (Optional) The name of the primary key generator
     * to use as specified in the {@link SequenceGenerator} 
     * or {@link TableGenerator} annotation.
     * <p> Defaults to the id generator supplied by persistence provider.
     */
    String generator() default "";
@Data
@Table(name = "`ah`")
public class Pxjh {
    @Id
    @Column(name = "docid")
    @GeneratedValue(generator = "JDBC")
    /** $column.columnComment */
    private String docid;

@Data

  • staticConstructor
package lombok;

@java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE)
public @interface Data {
    java.lang.String staticConstructor() default "";
}

源码

/**
 * Generates getters for all fields, a useful toString method, and hashCode and equals implementations that check
 * all non-transient fields. Will also generate setters for all non-final fields, as well as a constructor.
 * <p>
 * Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}.
 * <p>
 * Complete documentation is found at <a href="https://projectlombok.org/features/Data">the project lombok features page for &#64;Data</a>.
 * 
 * @see Getter
 * @see Setter
 * @see RequiredArgsConstructor
 * @see ToString
 * @see EqualsAndHashCode
 * @see lombok.Value
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Data {
	/**
	 * If you specify a static constructor name, then the generated constructor will be private, and
	 * instead a static factory method is created that other classes can use to create instances.
	 * We suggest the name: "of", like so:
	 * 
	 * <pre>
	 *     public @Data(staticConstructor = "of") class Point { final int x, y; }
	 * </pre>
	 * 
	 * Default: No static constructor, instead the normal constructor is public.
	 * 
	 * @return Name of static 'constructor' method to generate (blank = generate a normal constructor).
	 */
	String staticConstructor() default "";
}

@PathVariable

其用来获取请求路径(url)中的动态参数

@RequestMapping

@ResponseBody

使用在@controller上的方法上
* 在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody后是将java对象转为json格式的数据,
表示该方法的返回结果直接写入HTTP response body中(通常用来返回JSON数据或者是XML数据),一般在异步获取数据时使用,不会被解析为跳转路径。而是直接将数据写入到输入流中,
他的效果等同于通过response对象输出指定格式的数据。
* 注意编码:
如果返回对象,按utf-8编码。
如果返回String,默认按iso8859-1编码,页面可能出现乱码。
因此在注解中我们可以手动修改编码格式,例如@RequestMapping(value="/aqgl",produces="text/html;charset=utf-8"),
前面是请求的路径,后面是编码格式。
* 当方法上面没有写@ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
* 原理:控制层方法的返回值是如何转化为json格式的字符串的?
其实是通过HttpMessageConverter中的方法实现的,它本是一个接口,在其实现类完成转换。
如果是bean对象,会调用对象的getXXX()方法获取属性值并且以键值对的形式进行封装,进而转化为json串。
如果是map集合,采用get(key)方式获取value值,然后进行封装。

@RequestBody

是作用在形参列表上,用于将前台发送过来固定格式的数据【xml格式 或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是
系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上
注意:在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,
@RequestBody最多只能有一个,而@RequestParam()可以有多个。

1、该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;由于GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。
2、再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
参考:@RequestBody的使用

@RequestParam

@Mapper

@MapperScan

@Repository

首先:@repository是用来注解接口,如下图:这个注解是将接口BookMapper的一个实现类(具体这个实现类的name叫什么,还需要再分析源码找找看)交给spring管理(在spring中有开启对@repository注解的扫描),当哪些地方需要用到这个实现类作为依赖时,就可以注入了.当然我们也可以主动给这个实现类命名
引用@Respository

@Annotation

@Cacheable @CacheEvict

cacheable
ccc

@NotBlank @NotNull @NotEmpty

@NotBlank

The annotated element must not be {@code null} and must contain at
least one non-whitespace character. Accepts {@code CharSequence}. CharSequence字符序列

@NotEmpty
The annotated element must not be {@code null} nor empty. Supported types are:
 * <ul>
 * <li>{@code CharSequence} (length of character sequence is evaluated)  字符串</li>
 * <li>{@code Collection} (collection size is evaluated) </li>
 * <li>{@code Map} (map size is evaluated) </li>
 * <li>Array (array length is evaluated)</li>
 * </ul>
@NotNull
* The annotated element must not be {@code null}.
 * Accepts any type.

@RestControllerAdvice

SpringBoot - MyBatis-Plus

二、设置模型对应的表名、字段名

1,设置关联的表名

(1)默认情况下,如果数据库表是使用标准的下划线命名,并且能对应上实体类的类名,我们就不需要特别去手动匹配。比如有张 user_info 表,那么会自动匹配下面这个实体类:

@Data
public class UserInfo {
    private Integer id;
    private String userName;
    private String passWord;
}

(2)如果数据库中所有表都有个表名前缀,比如我们想让 t_user_info 表仍然对应 UserInfo 实体类,可以添加如下全局配置设置表名前缀:

mybatis-plus.global-config.db-config.table-prefix=t_

(3)如果所有表名都不是下划线命名(但能跟类名对应上),比如想让 userinfo 表对应 UserInfo 实体类,可以添加如下全局配置,表示数据库表不使用下划线命名:

mybatis-plus.global-config.db-config.table-underline=false

(4)除了上面两种全局配置方法外,我们还可以使用 @TableName 表名注解指定当前实体类对应的表名,比如下面 UserInfo 实体类对应表名为 user:

@Data
@TableName(value = "user")
public class UserInfo {
    private Integer id;
    private String userName;
    private String passWord;
}
2,设置关联的字段名

(1)同表名一样,如果数据库表里的字段名使用标准的下划线命名,并且能对应上实体类的成员名称(驼峰命名),我们就不需要特别去手动匹配。比如下面 user_info 表里的字段会自动跟 UserInfo 实体类的各个成员属性一一对应:
原文:SpringBoot - MyBatis-Plus使用详解2(设置实体类对应的表名、字段名 )

@Data
public class UserInfo {
    private Integer id;
    private String userName;
    private String passWord;
}

(2)如果数据库表里的字段名并不是使用下划线命名(但能跟实体类的成员名称对应上),可以添加如下全局配置,表示数据库表字段名不使用下划线命名:

原文:SpringBoot - MyBatis-Plus使用详解2(设置实体类对应的表名、字段名 )

mybatis-plus.configuration.map-underscore-to-camel-case=false

(3)除了全局配置方法外,我们还可以使用 @TableId 注解(标注在主键上)和 @TableField 注解(标注在其他成员属性上)来指定对应的字段名:

@Data
public class UserInfo {
    @TableId(value = "uuid")
    private Integer id;
    @TableField(value = "uname")
    private String userName;
    @TableField(value = "pword")
    private String passWord;
}

原文出自:www.hangge.com 转载请保留原文链接:原文链接l

参考文章:

  1. https://blog.csdn.net/weixin_42265148/article/details/104739175?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159574068319195265964373%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=159574068319195265964373&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-1-104739175.pc_ecpm_v3_pc_rank_v3&utm_term=%40column&spm=1018.2118.3001.4187
  2. https://blog.csdn.net/sswqzx/article/details/84337672?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159574608419724835850884%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=159574608419724835850884&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v3~pc_rank_v3-9-84337672.pc_ecpm_v3_pc_rank_v3&utm_term=%40table&spm=1018.2118.3001.4187
  3. https://blog.csdn.net/u012493207/article/details/50846616?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight
  4. https://blog.csdn.net/jiahao1186/article/details/91980316
  5. https://blog.csdn.net/justry_deng/article/details/80972817
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值