1. 程式人生 > 實用技巧 >ssm商城教學13.分頁

ssm商城教學13.分頁

目前的分頁方式

目前的分頁方式是自己寫分頁對應的limit SQL語句,並且提供一個獲取總數的count(*) SQL。 不僅如此, mapper, service, service.impl 裡都要提供兩個方法:
list(Page page), count()

分類是這麼做的,後續其他所有的實體類要做分頁管理的時候都要這麼做,所以為了提高開發效率,把目前的分頁方式改為使用 pageHelper分頁外掛來實現。

CategoryMapper.xml

1. 去掉total SQL語句
2. 修改list SQL語句,去掉其中的limit

<?xmlversion="1.0"

encoding="UTF-8"?>

<!DOCTYPE mapper

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mappernamespace="com.how2java.tmall.mapper.CategoryMapper">

<selectid="list"resultType="Category">

select * from category order by id desc

</select>

<insertid="add"keyProperty="id"useGeneratedKeys="true"parameterType="Category">

insert into category ( name ) values (#{name})

</insert>

<deleteid="delete">

delete from category where id= #{id}

</delete>

<select

id="get"resultType="Category">

select * from category where id= #{id}

</select>

<updateid="update"parameterType="Category">

update category set name=#{name} where id=#{id}

</update>

</mapper>

CategoryMapper

1. 去掉total()方法
2. 去掉list(Page page)方法
3. 新增list() 方法

packagecom.how2java.tmall.mapper;

importcom.how2java.tmall.pojo.Category;

importjava.util.List;

publicinterfaceCategoryMapper {

List<Category> list();

voidadd(Category category);

voiddelete(intid);

Category get(intid);

voidupdate(Category category);

}

CategoryService

1. 去掉total()方法
2. 去掉list(Page page)方法
3. 新增list() 方法

packagecom.how2java.tmall.service;

importcom.how2java.tmall.pojo.Category;

importjava.util.List;

publicinterfaceCategoryService{

List<Category> list();

voidadd(Category category);

voiddelete(intid);

Category get(intid);

voidupdate(Category category);

}

CategoryServiceImpl

1. 去掉total()方法
2. 去掉list(Page page)方法
3. 新增list() 方法

packagecom.how2java.tmall.service.impl;

importcom.how2java.tmall.mapper.CategoryMapper;

importcom.how2java.tmall.pojo.Category;

importcom.how2java.tmall.service.CategoryService;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.stereotype.Service;

importjava.util.List;

@Service

publicclassCategoryServiceImplimplementsCategoryService {

@Autowired

CategoryMapper categoryMapper;

@Override

publicList<Category> list() {

returncategoryMapper.list();

}

@Override

publicvoidadd(Category category) {

categoryMapper.add(category);

}

@Override

publicvoiddelete(intid) {

categoryMapper.delete(id);

}

@Override

publicCategory get(intid) {

returncategoryMapper.get(id);

}

@Override

publicvoidupdate(Category category) {

categoryMapper.update(category);

}

}

CategoryController

修改list方法
1. 通過分頁外掛指定分頁引數

PageHelper.offsetPage(page.getStart(),page.getCount());


2. 呼叫list() 獲取對應分頁的資料

categoryService.list();


3. 通過PageInfo獲取總數

int total = (int) new PageInfo<>(cs).getTotal();


其餘部分沒有變化

@RequestMapping("admin_category_list")

publicString list(Model model,Page page){

PageHelper.offsetPage(page.getStart(),page.getCount());

List<Category> cs= categoryService.list();

inttotal = (int)newPageInfo<>(cs).getTotal();

page.setTotal(total);

model.addAttribute("cs", cs);

model.addAttribute("page", page);

return"admin/listCategory";

}

修改applicationContext.xml

applicationContext.xml中關於外掛部分本來是被註釋掉的,現在釋放出來(51到60行)