中软国际实训第四天——实现数据的增删改查以及用户登录
昨天的课程我们搭建起了ssm框架结构,并实现了数据库的简单增删查改;今天主要任务事实现模糊搜索功能以及用户列表的分页查询和管理
- 首先我们创建一个工具类PageInfo用于将获取到的信息以List形式进行存储管理。
package com.zhongruan.bean;
import java.util.List;
public class PageInfo<T> {
private List<T> list;
private int size;
private int totalPage;
private int totalCount;
private int currentPage;
public List<T> getList(){
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
}
- 修改dao层代码
在UserDao类中对findAll进行修改
public interface IUserInfoDao {
public List<UserInfo> findAll();
public UserInfo findUser(@Param("username") String username, @Param("password") String password); //登录用户
}
- 在UserInfoMapper中实现Dao接口
<mapper namespace="com.zhongruan.dao.IUserInfoDao" >
<select id="finAll" resultType="com.zhongruan.bean.UserInfo">
select * from userinfo
</select>
<select id="findUser" resultType="com.zhongruan.bean.UserInfo" parameterType="com.zhongruan.bean.UserInfo">
select * from userinfo where username = #{username} and password = #{password};
</select>
</mapper>
- UserSeviceImpl对findAll方法实现
@Override
public PageInfo<User> findAll(int currentPage, String username) {
PageInfo<User> pageInfo = new PageInfo<>();
pageInfo.setSize(5);
//tc为查询数据的总行数
int tc = userDao.getTotalCount(username);
pageInfo.setTotalCount(tc);
//tp为总页数
int tp = (int)Math.ceil(tc/5.0);
pageInfo.setTotalPage(tp);
if (currentPage<1){
pageInfo.setCurrentPage(1);
}else if(currentPage>tp){
pageInfo.setCurrentPage(tp);
}else{
pageInfo.setCurrentPage(currentPage);
}
//0,5,10,15
int start = (pageInfo.getCurrentPage()-1)*5;
List<User> userList = userDao.findAll(start,username);
pageInfo.setList(userList);
return pageInfo;
}
- 在controller中控制页面的跳转
@Controller
@RequestMapping("user")
public class UseInfoController {
@Autowired
private IUserInfoService iUserInfoService;
@RequestMapping("/findAll.do")
public ModelAndView findAll(){
ModelAndView modelAndView = new ModelAndView();
List<UserInfo> userInfos = iUserInfoService.findAll();
modelAndView.addObject("userInfos",userInfos);
modelAndView.setViewName("user-list");
return modelAndView;
}
@RequestMapping("login.do")
public ModelAndView checkLogin(UserInfo userInfo){
ModelAndView modelAndView = new ModelAndView();
boolean flag;
flag = iUserInfoService.checkLogin(userInfo.getUsername(), userInfo.getPassword()); //判断数据库中有无登录用户
if (flag == true){
modelAndView.addObject("userInfo", userInfo);
modelAndView.setViewName("main"); //跳转到主界面
return modelAndView;
}
modelAndView.setViewName("../failer"); //跳转到登录失败界面
return modelAndView;
}
}
个人总结:
今天我们主要就算实现了用户列表的分页以及模糊查询,通过在mapper包中进行sql语句的修改,使用concat来进行模糊查询,在实现接口时对findAll方法进行重新编写,在controller中也一样,最后在jsp文件中使用封装好的PageInfo来传递数据供页面使用。