SSM增删改查以及分页插件pageHelper的使用

继上一篇的论文实现了登录验证的功能之后,我们这篇文章主要写的是SSM增删改查以及分页插件pageHelper的使用

SSM增删改查

因上次进行了SSM项目的创建,我们就直接继续写下去:
首先,进行填写的是dao层,将所需要的功能进行抒写:

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);

}

接着我们需要进行mapper.xml的sql语句编写:

<?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" >

    <!--    登录-->
    <select id="doLogin" parameterType="String" resultType="com.zhongruan.bean.UserInfo">
        <!--第一个username是数据库里的,#{输入的用户名}-->
        SELECT * FROM tb_user WHERE username=#{username}

    </select>


    <!-- 全部查询-->
    <select id="findAll" resultType="com.zhongruan.bean.UserInfo">
        SELECT * FROM tb_user
    </select>


    <!--增加操作-->
    <insert id="addUser" parameterType="com.zhongruan.bean.UserInfo">
        INSERT INTO tb_user(id,username,password) VALUES (#{id},#{username},#{password})
    </insert>

    <!--删除操作-->
    <delete id="delUserById" parameterType="Integer">
        DELETE FROM tb_user where id=#{id}
    </delete>


    <!--修改前的查询-->
    <select id="updSelUserInfoByID" parameterType="Integer" resultType="com.zhongruan.bean.UserInfo">
        SELECT * FROM tb_user where id=#{id}
    </select>

    <!--更新操作-->
    <update id="updUserInfo" parameterType="com.zhongruan.bean.UserInfo">
        UPDATE tb_user SET username=#{username},password=#{password} WHERE id=#{id}
    </update>
</mapper>

然后进行service层的编写:
IUserInfoService:

public interface IUserInfoService {

    UserInfo doLogin(String username);

    //分页查询
    List<UserInfo> findAll(Integer page,Integer size);

    void addUser(UserInfo userInfo);

    void delUserById(int id);

    UserInfo updSelUserInfoByID(int id);

    void updUserInfo(UserInfo userInfo);
}

IUserInfoService:

@Service
public class UserInfoServiceImpl implements IUserInfoService{

    //通过对象名
    //@Resource(name = "")

    //通过类名去注入
    @Autowired
    private IUserInfoDao userInfoDao;

    @Override
    public UserInfo doLogin(String username) {
        return userInfoDao.doLogin(username);
    }

    //分页查询
    @Override
    public List<UserInfo> findAll(Integer page, Integer size) {
        PageHelper.startPage(page,size);
        return userInfoDao.findAll();
    }

    @Override
    public void addUser(UserInfo userInfo) {
        userInfoDao.addUser(userInfo);
    }

    @Override
    public void delUserById(int id) {
        userInfoDao.delUserById(id);
    }

    @Override
    public UserInfo updSelUserInfoByID(int id) {
        return userInfoDao.updSelUserInfoByID(id);
    }

    @Override
    public void updUserInfo(UserInfo userInfo) {
        userInfoDao.updUserInfo(userInfo);
    }


}

接着便是controller层:

@Controller
@RequestMapping("/user")
public class UserInfoController {
    @Autowired
    private IUserInfoService userInfoService;

    @RequestMapping(value={
            "/doLogin.do",
            "/doAside.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);
                return "main";
            }else {
                System.out.println("密码错误,登录失败");
                session.setAttribute("password","密码错误,登录失败");
                return "../login";
            }
        }else{
            System.out.println("当前用户不存在,请重新输入");
            session.setAttribute("username","当前用户不存在,请重新输入");
            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){
        //调用service,得到结果
        userInfoService.addUser(userInfo);

        //增加成功,返回重新查询
        return "redirect:findAll.do";
    }

    //删除
    @RequestMapping("/delUserById.do")
    public String delUserById(int id){
        userInfoService.delUserById(id);
        System.out.println("删除成功");
        return "redirect:findAll.do";
    }

    //修改前的查询
    @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 updateUser(UserInfo userInfo){
        userInfoService.updUserInfo(userInfo);
        System.out.println("修改成功");

        return "redirect:findAll.do";
    }
}

在编写controller层时,我们要和各个页面进行对应修改
最后便是测试。

总结:此次进行了SSM框架的增删改查功能,因为之前进行了登录验证功能,此次的增删改查功能相对于来说,较为上手,但是,进行编写代码时一定要细心,考虑周全,比如要考虑每种功能需不需要返回值,返回值的类型等等,还有controller层的RequestMapping注解后的value值要与页面中的相互对应。

分页插件pageHelper的使用

在使用这个插件前,我们要先知道它的优点:
优点:无需你自己去封装以及关心sql分页等问题,使用很方便,前端取数据也很方便。
接下来,我们开始进行它的使用步骤:
,在Pom.xml中导包:

<dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.2</version>
</dependency>

将这些代码进行复制下载

,在ApplicationCntext.xml中把架包告诉给SqlSessionfactory。

 <!--    分页配置-->
        <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对象中
在这里插入图片描述
,在Service中指定 page和 size(举例的是查询所有功能)
IUserInfoService:
在这里插入图片描述
UserInfoServiceImpl:
在这里插入图片描述
:Controller 把得到的结果封装到 PageInfo中在进行使用ModelAndView返回
在这里插入图片描述
,进行页面代码相应的修改
在这里插入图片描述

总结:此次学习使用了分页插件pageHelper,感觉真的方便了许多,不需要你自己去封装以及关心sql分页等问题,但是在使用过程中我们一定要看清楚你需要用到的东西,不要运用错误,还有就是,在使用过程中controller中的@RequestParam注解的默认值千万不要忘记写,如果没有进行编写,分页插件pageHelper将会得不到你的总页数,在进行页面点击尾页操作时将会报错。

这是分页插件pageHelper相关变量名
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值