7-30日Java实训感受
- 7-30,是java实训的第十一天,在昨天已经实现了新闻系统的后台开发,今天实训老师带我们实现了新闻系统的前台项=项目,这个部分主要是实现对数据的查询和显示,主要实现了新闻系统的首页、分类和标签管理。
- 此外,在老师讲完课后,自己在中午通过亲自实现老师早上讲的功能,对老师所讲的知识有了一个更加深刻的学习和体会
- 其次,今天是小组项目开发的第三天,我今天主要实现后台登录和路由跳转功能。
springboot框架新闻系统前台实现流程
- 控制层
@Controller
public class ArchivesController {
@Autowired
private NewsService newsService;
@RequestMapping("archives")
public String archives(Model model){
HashMap<String, List<News>> map=newsService.archiveNews();
Long count=newsService.countNews();
model.addAttribute("newsCount",count);
model.addAttribute("archiveMap",map);
return "archives";
}
}
@Controller
public class TagShowController {
@Autowired
private TagService tagService;
@Autowired
private NewsService newsService;
@RequestMapping("/tags/{id}")
public String tag(@PageableDefault(size = 5,sort = {"updateTime"},direction = Sort.Direction.DESC) Pageable pageable,
@PathVariable Long id, Model model){
List<Tag> tags=tagService.findTop(7);
if(id==-1){
id=tags.get(0).getId();
}
Page<News> page=newsService.searchNews(pageable,id);
model.addAttribute("page",page);
model.addAttribute("tags",tags);
return "tags";
}
}
@Controller
public class TypeShowController {
@Autowired
private TypeService typeService;
@Autowired
private NewsService newsService;
@RequestMapping("/types/{id}")
public String types(@PageableDefault(size = 5,sort = {"updateTime"},direction = Sort.Direction.DESC)Pageable pageable,
@PathVariable Long id, Model model){
List<Type> types=typeService.findTop(7);
if(id==-1){
id=types.get(0).getId();
}
NewsQuery newsQuery=new NewsQuery();
newsQuery.setTypeId(id.toString());
Page<News> page=newsService.searchNews(pageable,newsQuery);
model.addAttribute("page",page);
model.addAttribute("types",types);
return "types";
}
}
- dao层
public interface NewsDao extends JpaRepository<News,Long> , JpaSpecificationExecutor<News> {
@Query("select function('date_format',n.updateTime,'%Y') as year from News n group by function('date_format',n.updateTime,'%Y') order by year desc")
List<String> findGroupYear();
@Query("select n from News n where function('date_format',n.updateTime,'%Y') = ?1")
List<News> findByYear(String y);
}
public interface TagDao extends JpaRepository<Tag,Long> {
@Query("select t from Tag t")
List<Tag> findTop(Pageable pageable);
}
public interface TagDao extends JpaRepository<Tag,Long> {
@Query("select t from Tag t")
List<Tag> findTop(Pageable pageable);
}
- server层
public HashMap<String, List<News>> archiveNews() {
LinkedHashMap<String,List<News>> map=new LinkedHashMap<>();
List<String> years=newsDao.findGroupYear();
for(String y:years){
List<News> news = newsDao.findByYear(y);
map.put(y,news);
}
return map;
}
springboot框架新闻系统前台实现效果