首先是springboot框架的通用分层:
1.实体层:常用文件夹命名有:bean、pojo、model
具体就是和数据库对应的字段名称形成的一个类
(针对通用的Hibernate jpa)
使用@Entity:对实体注释,表明是Hibernate映射对象都要有这个注释
使用@Table:声明此对象映射到数据库的数据表,通过它可以为实体指定表(talbe),目录(Catalog)和schema的名字。该注释不是必须的,如果没有则系统使用默认值(实体的短类名)。
使用@Id 表明为主键
使用@GeneratedValue指定主键的生成策略。比如指定、自增等
@Column注解表明字段对应 比如数据库为test_xxxx字段,那么@Column(name="test_xxxx")表明映射这个字段
然后还有@ManyToOne,@JoinColumn,@OneToMany,@OneToOne,@ManyToMany等关联注解
(以上几个注解。mybatis的话不用)
2.数据持久层:DAO
具体为使用sql语句定义接口,书写与数据库的交互,配置与数据库有关的一些参数,
使用@Repository注解:用于标注数据访问组件,即DAO组件
3.业务层:service层,以及serviceimpl实现层
service层具体就是写接口,通过Impl层注解实现注入,本身无需注解
serviceimpl层就是继承接口,具体实现接口函数。
impl外部使用@Service注解:自动注册到Spring容器
@Autowired是用在JavaBean中的注解,用来给指定的字段或方法注入所需的外部资源。service层和controller层都用
4.控制层:controller层
具体为进行具体处理,例如接收前端数据,返回后端数据等,调用各种实际要执行的函数,从而达成目的;
@RestController用于标注控制类,是一个组合注解相当于@Controller+@ResponseBody,需引用包
@Controller注解:自动注册到Spring容器,和service层类似
@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。
@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式,比如返回json格式
(如果使用thymeleaf要@Controller注解。如果要返回json数据,那么注解为@RestController)
除此以外还有些常用的注解
5.jpa Dao层使用:
@Query 该注解用于执行sql语句,注入自定义的sql,nativeQuery表明是否使用原生的sql语句。为false则sql语句字段为后端映射到的属性
@Modifying来标注这句sql是一个更新类(增删改)的自定义语句。
@Transactional注解是设置其不为只读(readOnly),因为不加上这个注解的话,Dao层的@Repository默认为只读的
6.shiro 权限验证的注解:
@RequiresAuthentication验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时。
@RequiresRoles("RoleName");从subject中验证用户的角色
@RequiresPermissions("PermissionName");从subject中验证用户的角色的权限是否拥有
@RequiresPermissions(value={"myaddpermission"},logical= Logical.OR)