目前的分页方式
目前的分页方式是自己写分页对应的limit SQL语句,并且提供一个获取总数的count(*) SQL。 不仅如此, mapper, service, service.impl 里都要提供两个方法:
list(Page page), count()
分类是这么做的,后续其他所有的实体类要做分页管理的时候都要这么做,所以为了提高开发效率,把目前的分页方式改为使用 pageHelper分页插件来实现。
CategoryMapper.xml
1. 去掉total SQL语句
2. 修改list SQL语句,去掉其中的limit
<?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.how2java.tmall.mapper.CategoryMapper">
<select id="list" resultType="Category">
select * from category order by id desc
</select>
<insert id="add" keyProperty="id" useGeneratedKeys="true" parameterType="Category" >
insert into category ( name ) values (#{name})
</insert>
<delete id="delete">
delete from category where id= #{id}
</delete>
<select id="get" resultType="Category">
select * from category where id= #{id}
</select>
<update id="update" parameterType="Category" >
update category set name=#{name} where id=#{id}
</update>
</mapper>
CategoryMapper
1. 去掉total()方法
2. 去掉list(Page page)方法
3. 新增list() 方法
package com.how2java.tmall.mapper;
import com.how2java.tmall.pojo.Category;
import java.util.List;
public interface CategoryMapper {
List<Category> list();
void add(Category category);
void delete(int id);
Category get(int id);
void update(Category category);
}
CategoryService
1. 去掉total()方法
2. 去掉list(Page page)方法
3. 新增list() 方法
package com.how2java.tmall.service;
import com.how2java.tmall.pojo.Category;
import java.util.List;
public interface CategoryService{
List<Category> list();
void add(Category category);
void delete(int id);
Category get(int id);
void update(Category category);
}
CategoryServiceImpl
1. 去掉total()方法
2. 去掉list(Page page)方法
3. 新增list() 方法
package com.how2java.tmall.service.impl;
import com.how2java.tmall.mapper.CategoryMapper;
import com.how2java.tmall.pojo.Category;
import com.how2java.tmall.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class CategoryServiceImpl implements CategoryService {
@Autowired
CategoryMapper categoryMapper;
@Override
public List<Category> list() {
return categoryMapper.list();
}
@Override
public void add(Category category) {
categoryMapper.add(category);
}
@Override
public void delete(int id) {
categoryMapper.delete(id);
}
@Override
public Category get(int id) {
return categoryMapper.get(id);
}
@Override
public void update(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")
public String list(Model model,Page page){
PageHelper.offsetPage(page.getStart(),page.getCount());
List<Category> cs= categoryService.list();
int total = (int) new PageInfo<>(cs).getTotal();
page.setTotal(total);
model.addAttribute("cs", cs);
model.addAttribute("page", page);
return "admin/listCategory";
}
修改applicationContext.xml
applicationContext.xml中关于插件部分本来是被注释掉的,现在释放出来(51到60行)