文章目录
VBlog项目代码理解之后端
资源
项目地址
前后端交互代码理解
前端代码理解
推荐:整个项目几乎是只用到了SpringBoot、Vue、Mybatis、ElementUI,没有用到Redis、RabbitMQ等内容,很适合刚学完SpringBoot和Vue的同学练手,感谢作者!帮作者打个广告吧~
PS:这是本人第一个学习的项目,难免会有错误的地方,哪里有问题烦请指正,感谢!
因为主要学的后端,之前也练过图书管理系统,所以没什么好详细记录的,就是有些Mybatis
操作还不熟悉。
Bean
很多bean类,但只有User
类实现了UserDetails
(UserDetails
和UserDetailsService
在下面的Spring Security
有介绍),其他的类都通过id等方式和User绑定。
要特别注意的方法就是getAuthorities()
还用@JsonIgnore
注释了一些重载方法,注意中间isEnabled()
没有用这个注释
@Override
@JsonIgnore
public boolean isAccountNonExpired() {
return true;
}
@Override
@JsonIgnore
public boolean isAccountNonLocked() {
return true;
}
@Override
@JsonIgnore
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
@Override
@JsonIgnore
public List<GrantedAuthority> getAuthorities() {
List<GrantedAuthority> authorities = new ArrayList<>();
for (Role role : roles) {
authorities.add(new SimpleGrantedAuthority("ROLE_" + role.getName()));
}
return authorities;
}
Mapper
就是一些基础方法的组合
迷惑:
-
分页:
<!--状态与权限的搜索,为啥还限制了分页?--> <select id="getArticleByStateByAdmin" resultType="org.sang.bean.Article"> SELECT a.id,a.`title`,a.`editTime`,a.`pageView`,a.`state`,u.`nickname`,c.`cateName`,a.uid FROM article a,user u,category c WHERE a.`cid`=c.`id` AND a.`uid`=u.`id` and a.state=1 <if test="keywords!=null"> AND title LIKE concat('%',#{keywords},'%') </if> ORDER BY a.editTime DESC limit #{start},#{count}; </select> <select id="getArticleCountByState" resultType="int"> SELECT count(*) FROM article <where> <if test="state!=-1"> AND state=#{state} </if> <if test="uid!=null"> AND uid=#{uid} </if> <if test="keywords!=null"> AND title LIKE concat('%',#{keywords},'%') </if> </where> </select>
-
奇怪的LEFT、JOIN、ON
<!--啊!LEFT JOIN ON是啥--> <select id="getArticleById" parameterType="Long" resultMap="BaseResultMap"