ssm商城教学13.分页
目前的分页方式
目前的分页方式是自己写分页对应的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行)