SpringBoot 注释

SpringBoot 注释

@Controller
一般标识类, 标明该类是控制类
@Controller 结合框架的视图解析器 return 跳转的是页面

@RequestMapping(value={"/user/userinfo"})

.@RequestMapping
一般标识方法 , 含有 映射地址

@RequestMapping(value={"/user/userinfo"})

@ResponseBody
标识 return 返回的字符串不再是映射地址, 而是一个数据, 前端要用 ajax 去接收, 否则会直接把数据打印在网页上

@ResponseBody
@RequestMapping(value={"/user/userinfo"})
public Object userinfo(HttpSession session){
Object user = session.getAttribute(“loginUser”);
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put(“username”, user.toString());
return dataMap;
}

@RequestBody
表示接收前端传来的 json 字符串, 不要和 @ResponseBody 混淆了
前端要用

$.ajax({
          url:"addUser",
          type:"POST",
          data:JSON.stringify(data),
          contentType:"application/json",  //缺失会出现URL编码,无法转成json对象
          success:function(){
              alert("成功");
          }
      });

中的 **JSON.stringify(data)**来吧前端的对象转换成json字符串, 这样后端就可以用@RequestBody来接收

@ResponseBody
@RequestMapping("/enrollinfo")
public Object enrollinfo( @RequestBody EnrollInfoDto enrollinfo) {
return enrollService.enrollinfo(enrollinfo);
}

@RestController
表示这是一个控制器,并且对每个方法的返回值都会直接转换为 json 数据格式。
是 @ResponseBody和@Controller的结合, 使视图解析器失效, 一般表示返回一个数据并且
由前端的 ajax 去接收(也是一般标识类)

@GetMapping
类似的有@PostMapping, @DeleteMapping…等等, 这些都和@RequestMapping*作用差不多, 差别在于这种表示方法可以允许映射地址相同, 那靠什么区别他们呢?那就依靠@PostMapping, @GetMapping了去标识了,他们表明了他们对数据的提交或是提取, 用文字表面意思来区分而已

@GetMapping("/categories")
@PostMapping("/categories")

通过前端的 ajax 来调用是 $.get 还是 . p o s t 来 传 的 , 后 端 也 会 用 相 对 应 的 注 释 来 接 收 前 端 传 来 的 数 据 , 如 前 端 用 .post 来传的, 后端也会用相对应的注释来接收前端传来的数据, 如前端用 .post.get来传到后台, 那后台就用@GetMapping标识的方法来接收数据

@GetMapping是一个组合注解 是@RequestMapping(method = RequestMethod.GET)的缩写

@PostMapping是一个组合注解 是@RequestMapping(method = RequestMethod.POST)的缩写

@Autowired:
自动装配, 这个我看了很久都没有彻底搞懂, 我只是看了一些项目的例子, 比如你创建了一个接口叫 Service, 然后我去实例化这个接口叫 ServiceImp, 这时如果你想调用 ServiceImp 的方法, 你只要这样:
@Autowired
Service service
service.method() —— 只要用 @Autowired 注释标识这个接口, 这个接口就会自动把对应的实现赋予到该接口上, 所以接口可以直接调用实现类的具体方法了。

所以目前大概总结一下这个@Autowired:
只要定义一个变量时加上 @Autowired 就会帮你实例化这个对象里的所有属性, 基本类型和引用类型都初始化好, 前提是你的引用类型也用@Autowired标识了。

@Component
@Service

@Entity
这两个注释一般标识类, 标识这个类是一个 Bean,可能是对于开发的需求?不同层的Bean就用不同的 Bean 注释去标识把, 比如 业务层的就用 @Service, 实体类就用 @Entity,
泛化点就用 @Component 这个,万金油?

@RequestParam
这个应该大家都知道把, 负责接收前端传来的数据, 这个注释的作用就是可以起别名, 其别名一定要与前端数据的名字相同

@ResponseBody
@RequestMapping("/enrollIsOut")
public Object enrollIsOut(@RequestParam(“enrollaudit”) int enrollaudit, @RequestParam(“enrollid”) int enrollid,
@RequestParam(“groupid”) int groupid) {
return enrollService.enrollIsOut(enrollaudit, enrollid, groupid);
}

@PathVariable
用来接收映射地址上用花括号括住的参数, 好像是 resful 的标准

@RequestMapping(value = “/search/{miceid}”)
public String search(@PathVariable(“miceid”) String miceid) {
。。。。。
}

@ExceptionHandler(value = Exception.class)
这个是表示异常的, 一般标识在方法上, 我也不太了解, 反正有这样的初步认识就OK把

数据库表的类的注解

@Entity
uniqueConstraints={@UniqueConstraint(columnNames={"enrollusercid"})})
@Table(name = "enroll", indexes = {@Index(columnList = "enrollusercid")}, uniqueConstraints={@UniqueConstraint(columnNames={"enrolluserphone","enrollmiceid"})})
@Proxy(lazy = false)
public class Enroll {
	// 报名编号
	@Id
	@GeneratedValue
	private int enrollid;
	

@Table
标明这个实体类是一个表

其中属性的意思:
name :表名
inidexes :索引 (@Index 也是索引, columnList 是列名)
uniqueConstraints :表示字段唯一性 (@UniqueConstraint 也是唯一性, columnNames 也是列名)

@Entity
是表名该类是一个实体类, 目前大多数都是通常和数据库表的类配合使用。

@Proxy
英文翻译成中文是代理的意思
其中 lazy 是延迟加载的意思(也称懒加载), 这里 lazy = false 意思是立即加载, lazy = true 才是延迟加载
延迟加载(懒加载):目前不需要的东西不加载到内存中, 当要用的时候才加载到内存中

@Id
表示主键

@GeneratedValue
一般表示自增长, 一般和 @Id 使用

如果数据库控制主键自增(auto_increment), 不加参数就会报错
@GeneratedValue(strategy=GenerationType.IDENINY)

@Column
表示该类属性对应表的列名, 如果类的属性和表的列名一致的话, 可写可不写;不一样就要写。
比如
你数据库的列名是 enrollname
你类的属性名是 name
那么你就要在类属性上标注 @Column(name = “enrollname”) 来达到表和类的关系

@Transactional
事务回滚, 一般用于增删改查数据途中发生错误时撤销之前全部有效操作。
简单来说就是防止你干事干了一半还有一半没干。

@Transient
@Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性;
如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架默认其注解为@Basic;

@JsonIgnoreProperties({ “handler”,“hibernateLazyInitializer” })
避免hibernate懒加载的无限递归该实体,导致出现异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值