【后端项目常用注解】

/** * dao层常用注解 **/

@Repository //类注解

代表仓库. 一般注解在DAO实现类上, 别人看代码时, 就知道这个类是一个跟数据存储有关的类. //还会封装dao层的异常转换成spring的异常

@Modifying //方法注解

如果你需要进行对数据的修改那就必须使用@Modifying注解 @Query(value = "",nativeQuery = true) //方法注解

@Query //方法注解

注解只有对数据查询的操作,@Query注解,使用注解有两种方式,一种是JPQL的SQL语言方式,一种是原生SQL的语言, //nativeQuery :表示是否采用原生SQL,诸如select * from tableName value : 取值,要么使用原生SQL,要么使用JPQL

/** * Entity层常用注解 **/

@Entity注解://类注解

说明这个class是实体类,并且使用默认的orm规则,即class名就是数据库表中表明,class字段名即表中字段名。 //@Entity注解指明这是一个实体Bean。

@Table注解: //类注解

是一个非必须的注解,@Table注解指定了Entity所要映射的数据库表,其中@Table.name()用来指定映射表的表名。 //如果同时使用了@Entity(name="student")和@Table(name="book"),最终对应的表名是book,这说明优先级:@Table>@Entity

@Access(AccessType.FIELD) //类注解

为FIELD,则将直接在字段上读取/设置值,绕过getter和setter.如果设置为PROPERTY,则使用getter和setter访问字段值. @DynamicUpdate //类注解 //@DynamicUpdate属性:设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false

@DynamicUpdate //类注解

@DynamicUpdate属性:设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false

@DynamicInsert //类注解

@DynamicInsert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句中,默认false。 // 比如希望数据库插入日期或时间戳字段时,在对象字段为空定的情况下,表字段能自动填写当前的sysdate。

/** * service层 **/

@service //类注解

注解为一个服务

标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中,不需要再在applicationContext.xml文件定义bean了。

@Transactional //类注解

数据库事务具备ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

事务按照Spring的事务机制不同方面可分为编程式事务和声明式事务:

编程式事务

通过编程代码在业务逻辑时需要时自行实现,粒度更小

声明式事务

通过注解或XML配置实现

//通过@Transactional注解实现事务 //如果需要将某个方法声明为事务操作,可通过将对应属性设置好的@Transactional注解来标记对应方法。

@Transactional注解的主要属性入下表所示。 属性名 说明 name 当在配置文件中有多个 TransactionManager , 可以用该属性指定选择哪个事务管理器。

 propagation 事务的传播行为,默认值为 REQUIRED。 事务传播行为

事务传播行为类型

说明

PROPAGATION_REQUIRED

如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择

PROPAGATION_SUPPORTS

支持当前事务,如果当前没有事务,就以非事务方式执行

PROPAGATION_MANDATORY

使用当前的事务,如果当前没有事务,就抛出异常

PROPAGATION_REQUIRES_NEW

新建事务,如果当前存在事务,把当前事务挂起

PROPAGATION_NOT_SUPPORTED

以非事务方式执行操作,如果当前存在事务,就把当前事务挂起

PROPAGATION_NEVER

以非事务方式执行,如果当前存在事务,则抛出异常

PROPAGATION_NESTED

如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作

isolation 事务的隔离度,默认值采用 DEFAULT。

timeout 事务的超时时间,默认值为-1。如果超过该时间限制但事务还没有完成,则自动回滚事务。

read-only 指定事务是否为只读事务,默认值为 false;为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true。

rollback-for 用于指定能够触发事务回滚的异常类型,如果有多个异常类型需要指定,各类型之间可以通过逗号分隔。

no-rollback-for 抛出 no-rollback-for 指定的异常类型,不回滚事务。

/** * Controller层 **/

@RestController //类注解

是@controller和@ResponseBody 的结合

@Controller  //类注解

将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。
@ResponseBody  //方法或形参注解

将java对象转为json格式的数据

@RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml格式 或者 json等】封装为对应的 JavaBean 对象

/**
*@RequestBody
*是作用在形参列表上,用于将前台发送过来固定格式的数据【xml格式 或者 json等】
*封装为对应的 JavaBean 对象,
*封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。
**/
@RequestMapping("/login.do")
@ResponseBody
public Object login(@RequestBody User loginUuser, HttpSession session) {
	user = userService.checkLogin(loginUser);
	session.setAttribute("user", user);
	return new JsonResult(user);
}

@RequestMapping //类,方法注解

注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上。

@RequestMapping(value=" ")

  • value 属性必须设值;
  •  value 属性是通过当前请求的请求地址来匹配请求;

@RequestMapping(value = "/testRequest",method = RequestMethod.GET)

  • method属性是通过当前请求的请求方式来匹配请求;
  • 浏览器向服务器发送请求,请求方式有很多GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS、TRACE。可以使用 method 属性来约束请求方式。
  • @GetMapping是一个组合注解,是**@RequestMapping(method = RequestMethod.GET)**的缩写  使用方式:@GetMapping(value = "/testRequest")
  • @PostMapping也是一个组合注解,是**@RequestMapping(method = RequestMethod.POST)**的缩写  使用方式:@PostMapping(value = "/testRequest")
@Controller
@RequestMapping(value = "/test")
public class RequestMappingController {

    @RequestMapping(value = "/testRequest",method = RequestMethod.GET)
    public String testRequest(){
        return "success";
    }
}

注意:映射方法中明确要求请求方式为get,所以post方式不被允许,只有修改为get,才能够请求成功,如果要想两种方式都支持,只需在@RequestMapping注解的method属性中添加另一种方式即可,中间用英文逗号隔开。

@RequestParam //形参注解                   

这个注解是用于后端接收数据的。接收的参数是来自 requestHeader 中,即请求头。通常用于 GET 请求,像 POST、DELETE 等其它类型的请求也可以使用。

@RequestMapping(value = "add",method = RequestMethod.GET)
public String addPeople(@RequestParam(value = "name", required = fasle,default = "初始值") String name,@RequestParam(value = "age") Integer age){
  .....
return "";
}

/** * 其他常用注解 **/

@Autowired 

可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作

@Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier使用

@Autowired(required = false)
private Date date ;
@Autowired
@Qualifier("birth")
 //限定描述符除了能根据名字进行注入,更能进行更细粒度的控制如何选择候选者
private Date birthday ;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值