传统分页
(1)改造export_web_manager
工程中的CompanyController
的list方法
/**
* 分页显示数据
*
* 需要:
* 页数
* 每页显示条数
* @param request
* @return
*/
@RequestMapping("/list")
public String list(HttpServletRequest request, @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int size){
PageResult pr = companyService.findPage(page,size);
request.setAttribute("page",pr);
return "company/company-list";
}
(2)在export_service_system
工程的CompanyService
中添加新的编辑方法
//分页查询
public PageResult findPage(int page, int size) {
//1.查询总记录数
long total = companyDao.findCount();
//2.查询分页的数据列表
/**
* sql : select * from table limit 0,5
*/
List list = companyDao.findPage((page-1)*size,size);
//3.构造返回值
return new PageResult(total,list,page,size);
}
(3)在export_dao
工程中的CompanyDao
接口和dao映射文件添加分页方法
//查询总记录数
long findCount();
//分页查询
List<Company> findPage(@Param("beg") int beg,@Param("end") int size);
映射文件
<!--查询总记录数-->
<select id="findCount" resultType="long">
select count(*) from ss_company
</select>
<!--分页查询数据列表-->
<select id="findPage" resultMap="BaseResultMap" parameterType="map">
select * from ss_company limit #{beg},#{end}
</select>
PageHelper实现分页查询
1.引入坐标
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>最新版本</version>
</dependency>
2.配置mybatis和插件的整合(dao层spring整合mybatis配置文件)
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!--配置pagehelper分页插件-->
<property name="plugins">
<list>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
helperDialect=mysql
</value>
</property>
</bean>
</list>
</property>
</bean>
3.在service层使用查询完成分页查询
(1)改造export_web_manager
工程中的CompanyController
的list方法
@RequestMapping("/list")
public String list(HttpServletRequest request, @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int size){
//PageResult pr = companyService.findPage(page,size);
PageInfo pi = companyService.findPageHelper(page,size);
request.setAttribute("page",pi);
return "company/company-list";
}
(2)在export_service_system
工程的CompanyService
中添加新的编辑方法
/**
* 使用pageHepler分页
* @param page
* @param size
* @return
*/
@Override
public PageInfo findPageHelper(int page, int size) {
//调用静态方法,设置分页参数
PageHelper.startPage(page,size);
//查询全部:会自动对第一个查询语句进行分页
List<Company> list = companyDao.findAll();
return new PageInfo<>(list);
}
部门管理
(1)在export_web_manager
工程中的cn.itcast.web.controller.system
包下创建部门管理控制器类DeptController
@Controller
@RequestMapping("/system/dept")
public class DeptController {
@Autowired
private DeptService deptService;
@RequestMapping("/list")
public String list(@RequestParam(defaultValue = "1")int page,@RequestParam(defaultValue = "10") int size, HttpServletRequest request){
//调用service层查询数据
String companyId = "1";
PageInfo info = deptService.findAll(page, size, companyId);
//将数据放到request域中
request.setAttribute("page",info);
return "system/dept/dept-list";
}
}
(2)在export_service_system
工程的cn.itcast.service.system
包下添加DeptService接口
和DeptServiceImpl实现类
并添加保存方法
public interface DeptService {
/**
* 查询全部
* 参数:page,size,companyId
*/
PageInfo findAll(int page,int size,String companyId);
}
public class DeptServiceImpl implements DeptService {
@Autowired
private DeptDao deptDao;
/**
* 查询全部
* @param page:页数
* @param size:每页显示条数
* @param companyId
* @return
*/
@Override
public PageInfo findAll(int page, int size, String companyId) {
//调用PageHelper中的静态方法
PageHelper.startPage(page,size);
//调用dao层执行查询全部的方法
List<Dept> list = deptDao.findAll(companyId);
//构造返回值
return new PageInfo<>(list);
}
}
(3) 在export_dao
工程的cn.itcast.dao.system
包下配置DeptDao
接口和dao映射文件
dao接口
public interface DeptDao {
/**
* 查询全部
*/
public List<Dept> findAll(String companyId);
dao映射文件
<mapper namespace="com.itheima.dao.system.DeptDao">
<resultMap id="baseResultMap" type="com.itheima.domain.system.Dept">
<id property="id" column="dept_id"/>
<result property="deptName" column="dept_name"/>
<result property="parentId" column="parent_id"/>
<result property="state" column="state"/>
<result property="companyId" column="company_id"/>
<result property="companyName" column="company_name"/>
</resultMap>
<select id="findAll" resultMap="baseResultMap">
select * from pe_dept where company_id=#{companyId}
</select>
保存部门
(1)在export_web_manager
工程的DeptController
中添加新的编辑方法
/**
* 保存或更新部门:
* 如果存在id ==> 更新部门
* 如果不存在id==> 保存部门
*/
@RequestMapping("/edit")
public String edit(Dept dept) {
//1.设置所属企业信息
String companyId = "1";
String companyName = "传智播客";
dept.setCompanyId(companyId);
dept.setCompanyName(companyName);
if (StringUtils.isEmpty(dept.getId())){
//如果为空,是保存部门
deptService.save(dept);
}else {
//如果不为空,是更新部门
}
return "redirect:/system/dept/list.do";
}
(2)在export_service_system
工程的cn.itcast.service.system
包下添加DeptService接口
和DeptServiceImpl实现类
并添加保存方法
//保存部门信息
public void save(Dept dept);
//保存部门信息
@Override
public void save(Dept dept) {
//设置id
dept.setId(UUID.randomUUID().toString());
//调用dao层保存信息
deptDao.save(dept);
}
(3)在export_dao
工程的cn.itcast.dao.system
包下配置DeptDao
接口和dao映射文件
dao接口
/**
* 保存部门
*/
public void save(Dept dept);
<!--保存-->
<insert id="save">
insert into pe_dept
(
dept_id,
dept_name,
parent_id,
state,
company_id,
company_name
)
values
(
#{id},
#{deptName},
#{parent.id},
#{state},
#{companyId},
#{companyName}
)
更新部门
(1)在export_web_manager
工程的DeptController
中添加新的方法
@RequestMapping("/toUpdate")
public String toUpdate(HttpServletRequest request,String id){
//根据id部门查询
Dept dept = deptService.findById(id);
request.setAttribute("dept",dept);
//查询所有部门
String companyId = "1";
List<Dept> list = deptService.findAll(companyId);
request.setAttribute("deptList", list);
return "system/dept/dept-update";
}
(2)在export_service_system
工程的DeptService和DeptServiceImpl实现类
中添加新的更新方法
@Override
public Dept findById(String id) {
return deptDao.findById(id);
}
(3)在export_dao
工程的中DeptDao和DeptDao.xml映射文件
中添加方法和对应的SQL
dao接口
//根据id查询部门
Dept findById(String id);
dao映射文件
<!--根据id查询-->
<select id="findById" resultMap="BaseResultMap" parameterType="string">
select * from pe_dept where dept_id =#{id}
</select>
(4)在export_service_system
工程的DeptService和DeptServiceImpl实现类
中添加新的更新方法
//更新部门信息
void update(Dept dept);
//更新部门信息
@Override
public void update(Dept dept) {
deptDao.update(dept);
}
(5)在export_dao
工程的中DeptDao和DeptDao.xml映射文件
中添加方法和对应的SQL
dao接口
/**
* 更新部门
*/
public void update(Dept dept);
dao映射文件
<!--更新-->
<update id="update">
update pe_dept set
dept_name = #{deptName},
parent_id = #{parent.id},
state = #{state},
company_id = #{companyId},
company_name = #{companyName}
where dept_id=#{id}
</update>
删除部门
(1)在export_web_manager
工程的DeptController
中添加新的方法
//删除
@RequestMapping("/delete")
public String delete(String id) {
//1.调用service删除
deptService.delete(id);
//2.页面跳转
return "redirect:/system/dept/list.do";
}
(2)在export_service_system
工程的DeptService和DeptServiceImpl实现类
中添加新的更新方法
//删除部门信息
void delete(String id);
//删除部门信息
@Override
public void delete(String id) {
deptDao.delete(id);
}
(3)在export_dao
工程的中DeptDao和DeptDao.xml映射文件
中添加方法和对应的SQL
dao接口
//删除部门
void delete(String id);
<!--//删除-->
<delete id="delete" parameterType="string">
delete from pe_dept where dept_id=#{id}
</delete>