接着上篇文字完成得登陆操作
今天目标:完成用户管理以及分页插件的目标
(1) 编写dao层方法
package com.zhongruan.dao;/*
@author: hedgehog
@date 2020/2/19 14:43
*/
import com.zhongruan.bean.UserInfo;
import java.util.List;
//IUserInfoDao 接口,数据库访问层,直接可以访问数据库
public interface IUserInfoDao {
// 验证登录
// 查询 Select
UserInfo doLogin(String username);
// 全部查询
List<UserInfo> findAll();
//添加操作
void addUser(UserInfo userInfo);
// 删除,根据主键ID
void delUserById(int id);
// 修改前的查询
UserInfo updSelUserInfoById(int id);
// 修改(更新)
void updUserInfo(UserInfo userInfo);
(2)mapper层
<?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.zhongruan.dao.IUserInfoDao" >
<!--namespace="命名空间"-->
<!-- 登录 id 值是 dao层一样 -->
<select id="doLogin" parameterType="String" resultType="com.zjitc.bean.UserInfo">
select * from tb_user where username=#{username}
</select>
<!-- 全部查询-->
<select id="findAll" resultType="com.zjitc.bean.UserInfo">
select * from tb_user
</select>
<!-- 增加-->
<insert id="addUser" parameterType="com.zjitc.bean.UserInfo">
insert into tb_user(id,username,password)value (#{id},#{username},#{password})
</insert>
<!-- 删除-->
<delete id="delUserById" parameterType="Integer">
delete from tb_user where id=#{id}
</delete>
<!-- 修改前的查询-->
<select id="updSelUserInfoById" parameterType="Integer" resultType="com.zjitc.bean.UserInfo">
select * from tb_user where id=#{id}
</select>
<!-- 修改(更新)-->
<update id="updUserInfo" parameterType="com.zjitc.bean.UserInfo">
update tb_user set username=#{username},password=#{password} where id=#{id}
</update>
</mapper>
(3) 修改配置文件
因为使用分页插件,所以需要修改配置文件在pom.xml添加架包
<!-- 分页架包 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
applicationContext.xml添加配置
<!-- 分页配置 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<props>
<prop key="helperDialect">mysql</prop>
<prop key="reasonable">true</prop>
</props>
</property>
</bean>
</array>
</property>
此分页配置一定要放在配置sqlSessionFactory对象中。
(4)service层
(5) controller层
package com.zjitc.controller;/*
@author: 李叶露
@date 2020/2/21 17:13
*/
import com.github.pagehelper.PageInfo;
import com.zjitc.bean.UserInfo;
import com.zjitc.service.IUserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpSession;
import java.util.List;
/**
* UserInfoController -变现层/控制器
*/
@Controller
@RequestMapping("/user")
public class UserInfoController {
//登录系统
@Autowired
private IUserInfoService userInfoService;
@RequestMapping("/doLogin.do")
public String doLogin(String username, String password, HttpSession session){
// 1.调用service,查询得到结果 ,自动补全返回值 ctrl+alt+v
UserInfo userInfo = userInfoService.doLogin(username);
// 2.判断
if (userInfo!=null){
if (userInfo.getPassword().equals(password)){
System.out.println("密码正确,登录成功!");
session.setAttribute("userInfo",userInfo);
System.out.println(userInfo);
return "main";
}else {
System.out.println("密码错误,登陆失败");
session.setAttribute("type","密码错误,请重新登陆!");
return "../login";
}
}else {
System.out.println("用户不存在,请重新输入");
session.setAttribute("type","用户不存在,请重新输入");
return "../login";
}
}
// 全部查询
// 所有需要返回数据到页面显示的全部都需要封装到ModelAndView里面
@RequestMapping("/findAll.do")
public ModelAndView findAll(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "5") Integer size){
// 调用service中的方法,得到查询结果
List<UserInfo> userInfoList= userInfoService.findAll(page,size);
// 把得到的数据存放到PageInfo中
PageInfo pageInfo=new PageInfo(userInfoList);
ModelAndView mv=new ModelAndView();
mv.addObject("pageInfo",pageInfo);
mv.setViewName("user-list");
return mv;
}
// 增加
@RequestMapping("/addUser.do")
public String addUser(UserInfo userInfo){
// 调用pagesservice,得到结果
userInfoService.addUser(userInfo);
// 增加成功,放回重新查询
return "redirect:findAll.do";
}
// 删除
@RequestMapping("/delUser.do")
public String delUserById(int id){
userInfoService.delUserById(id);
// 检测是否删除成功
System.out.println("删除成功");
//更新成功 返回重新查询
return "redirect:findAll.do";
}
// 修改前的查询
// JDBC和mybatis有什么区别
// 所有的框架都在JDBC上完成的
// mybatis自动封装
@RequestMapping("/UpdSelUserById.do")
public ModelAndView UpdSelUserInfoById(int id){
UserInfo userInfo= userInfoService.updSelUserInfoById(id);
ModelAndView mv=new ModelAndView();
mv.addObject("userInfo",userInfo);
mv.setViewName("user-update");
return mv;
}
// 修改更新
@RequestMapping("/updUserInfo.do")
public String updUserInfo(UserInfo userInfo){
userInfoService.updUserInfo(userInfo);
System.out.println("修改成功");
//更新成功 返回重新查询
return "redirect:findAll.do";
}
}
(6) 修改jsp页面
基本都已经完成 剩下的就是修改了用户jsp页面的情况
点击aside.jsp用户管理后跳转查询方法
user-list.jsp的参数设置
c标签里item的值就是从findAll方法ModelAndView传过来的
分页插件的配置也如下
全部查询完成
进行新增的操作
修改user-list新增按钮的路径
user_add.jsp页面
做删除用户功能,主要是controller层的方法编写
更新功能需要传值,需要单个查询的功能,传个id进去,直接跳转单个查询方法
user-update.jsp
今日目标已完成。
本人是在校学生,疫情使我在家学习,如有错误或更加简便的方法,可以指出来噢~