社交项目(八)

117 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

1.新增Book控制器

image.png

@Controller
public class BookController {
    @Resource
    private CategoryService categoryService;

    @GetMapping("/")
    public ModelAndView showIndex() {
        ModelAndView mav = new ModelAndView("/index");
        List<Category> categoryList = categoryService.selectAll();
        mav.addObject("categoryList", categoryList);
        return mav;


    }
}

代码说明:

  • @Controller:声明该控制器
  • @Resource private CategoryService categoryService:引入categoryService
  • ModelAndView mav = new ModelAndView("/index"):初始化ModelAndView,并且设置对应的页面
  • mav.addObject("categoryList", categoryList):查询的结果复制给mav对象

2.静态页面动态赋值

image.png

<#list categoryList as category>
    <a style="cursor: pointer" data-category="${category.categoryId}"
       class="text-black-50 font-weight-bold category">
        ${category.categoryName}</a>
   <#if category_has_next>|</#if>
</#list>

代码说明:

  • #list:说明该对象是数组
  • categoryList as category:list对象进行循环遍历,每个对象为category
  • ${category.categoryId}:采用对象.属性名,获取对象的值
  • <#if category_has_next>:判断是否为最后一个元素

3.把依赖发布到ouput中

image.png

4.重启tomcat

访问http://localhost:8080/ image.png 分类信息已经动态展示出来了 image.png

分页查询数据

1.新增Book实体类

image.png

@TableName("book")
public class Book {
    @TableId(type = IdType.AUTO)
    private Long bookId;
    private String bookName;
    private String subTitle;
    private String author;
    private String cover;
    private String description;
    private Long categoryId;
    private Float evaluationScore;
    private Long evaluationQuantity;

    public Long getBookId() {
        return bookId;
    }

    public void setBookId(Long bookId) {
        this.bookId = bookId;
    }
    //创建对应的geter和setter方法
    
}

2.新增BookMapper接口

package com.imooc.reader.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.imooc.reader.entity.Book;

public interface BookMapper extends BaseMapper<Book> {
}

image.png 代码说明:

  • extends BaseMapper<Book>:接口类BookMapper继承BaseMapper并且设置对应的泛型为Book

3.新增bookMapper.xml文件

image.png

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.imooc.reader.mapper.BookMapper">

</mapper>

4.定义BookService类

image.png

package com.imooc.reader.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.imooc.reader.entity.Book;

public interface BookService {
    public IPage<Book> paging(Integer page,Integer rows);
}

代码说明:

  • IPage<Book>:分页对象
  • paging(Integer page,Integer rows):分页方法,需要传递传递当前页数和每一页请求数量

5.实现BookServiceImpl

image.png

package com.imooc.reader.service.impl;
@Service("bookService")
@Transactional(propagation = Propagation.NOT_SUPPORTED,readOnly = true)
public class BookServiceImpl implements BookService {
    @Resource private BookMapper bookMapper;
    @Override
    public IPage<Book> paging(Integer page, Integer rows) {
        Page<Book> p = new Page<Book>(page,rows);
        QueryWrapper<Book> queryWrapper = new QueryWrapper<Book>();
        IPage<Book> pageObject = bookMapper.selectPage(p,queryWrapper);
        return pageObject;
    }
}

代码说明:

  • @Resource private BookMapper bookMapper;:引用bookMapper
  • Page<Book> p = new Page<Book>(page,rows);:设置分页对象,并且传入两个参数
  • QueryWrapper<Book> queryWrapper = new QueryWrapper<Book>();:设置查询条件
  • IPage<Book> pageObject = bookMapper.selectPage(p,queryWrapper);

6.新增测试类

image.png