最简单JSP+Servlet+Mybatis增删改查

1.查询

controller

package com.example.ks.controller;

import com.example.ks.mapper.GirlMapper;
import com.example.ks.model.Girl;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

@WebServlet("/list")
public class ListController extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置编码 开启mybatis 这6行都是固定写法记住就可以了
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        resp.setCharacterEncoding("utf-8");
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSession sqlSession = new SqlSessionFactoryBuilder().build(inputStream).openSession(true);
        GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);

        //查询
        String name = req.getParameter("name");
        //接收到前端传来的name调用mapper中对应的查询方法
        List<Girl> list = mapper.query(name);
        //将查询结果存在req中返回给前端
        req.setAttribute("list",list);
        req.getRequestDispatcher("index.jsp").forward(req,resp);
    }
}

mapper

package com.example.ks.mapper;

import com.example.ks.model.Girl;

import java.util.List;

/**
 * 接口
 * 每一个方法名称都与GirlMapper.xml中的id对应
 */
public interface GirlMapper {
    /**
     * 查询、搜索
     * 有没有搜索内容都可以用,因为GirlMapper.xml用的是动态查询
     * @param name
     * @return
     */
    List<Girl> query(String name);
}

xml

<?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.example.ks.mapper.GirlMapper">
    <select id="query" resultType="com.example.ks.model.Girl">
        select * from beauty
        <where>
            <if test="name != null and name != ''">
                and name like concat('%',#{name},'%')
            </if>
        </where>
    </select>
</mapper>

HTML

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%--引入JSTL标签库--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--允许使用JSTL标签库--%>
<%@page isELIgnored="false" %>
<%--时间格式化工具--%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<a href="add.jsp">添加</a>
<form action="list" method="post">
    <%--    name要与controller中req.getParameter("name")的一样--%>
    <input type="search" name="name">
    <input type="submit" value="搜索">
</form>
<table border="1px" cellspacing="1">
    <tr>
        <td>编号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>生日</td>
        <td>手机号</td>
        <td>男友id</td>
        <td>操作</td>
    </tr>
    <c:forEach items="${list}" var="item">
        <tr>
            <td>${item.id}</td>
            <td>${item.name}</td>
            <td>${item.sex}</td>
            <td>
                <fmt:formatDate value="${item.bornDate}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
            </td>
            <td>${item.phone}</td>
            <td>${item.boyfriend_id}</td>
            <td>
                <a href="javascript:del(${item.id})">删除</a>
                <a href="queryById?id=${item.id}">修改</a>
            </td>
        </tr>
    </c:forEach>
</table>
<script>
    function del(id) {
        if (confirm("确定要删除吗?")) {
            location.href = 'del?id=' + id
        }
    }
</script>
</body>
</html>

2.删除

controller

package com.example.ks.controller;

import com.example.ks.mapper.GirlMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;

@WebServlet("/del")
public class DelController extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置编码 开启mybatis 这6行都是固定写法记住就可以了
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        resp.setCharacterEncoding("utf-8");
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSession sqlSession = new SqlSessionFactoryBuilder().build(inputStream).openSession(true);
        GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);

        //接收前端传过来的id
        String id = req.getParameter("id");
        //调用mapper中对应的删除方法
        int res = mapper.del(Integer.parseInt(id));
        //和添加中的判断方法一样,直接复制粘贴
        if (res > 0){
            //删除成功 重定向到查询界面
            resp.sendRedirect("list");
        }else{
            //这里可以不写
            resp.getWriter().println("<script>alert('删除失败');location.href='list'</script>");
        }
    }
}

mapper

package com.example.ks.mapper;

import com.example.ks.model.Girl;

import java.util.List;

/**
 * 接口
 * 每一个方法名称都与GirlMapper.xml中的id对应
 */
public interface GirlMapper {
    /**
     * 根据id删除对应用户
     * @param id
     * @return
     */
    int del(Integer id);
}

xml

<?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.example.ks.mapper.GirlMapper">
    <delete id="del">
        delete from beauty where id = #{id}
    </delete>
</mapper>

3.增加

controller

package com.example.ks.controller;

import com.example.ks.mapper.GirlMapper;
import com.example.ks.model.Girl;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;

@WebServlet("/add")
public class AddController extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置编码 开启mybatis 这6行都是固定写法记住就可以了
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        resp.setCharacterEncoding("utf-8");
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSession sqlSession = new SqlSessionFactoryBuilder().build(inputStream).openSession(true);
        GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);

        //接收前端传过来的每一个文本框的值
        String name = req.getParameter("name");
        System.out.println("name:"+name);
        String sex = req.getParameter("sex");
        System.out.println("sex:"+sex);
        String phone = req.getParameter("phone");
        System.out.println("phone:"+phone);
        String boyFriendId = req.getParameter("boyFriendId");
        System.out.println("boyFriendId:"+boyFriendId);
        //把接收到的值添加到对象当中,因为id在数据库中自增所以无需传值,bornDate也不用传,在添加的sql语句中默认添加时间就是当前时间
        Girl girl = new Girl(null, name, sex, null, phone, Integer.parseInt(boyFriendId));
        //调用mapper中对应的添加方法
        int res = mapper.add(girl);
        if (res > 0){
            //添加成功 重定向到查询界面
            resp.sendRedirect("list");
        }else{
            //这里可以不写
            resp.getWriter().println("<script>alert('添加失败');location.href='list'</script>");
        }
    }
}

mapper

package com.example.ks.mapper;

import com.example.ks.model.Girl;

import java.util.List;

/**
 * 接口
 * 每一个方法名称都与GirlMapper.xml中的id对应
 */
public interface GirlMapper {
    /**
     * 添加方法
     * 因为是添加所以要传一个对象进来
     * @param girl
     * @return
     */
    int add(Girl girl);
}

xml

<?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.example.ks.mapper.GirlMapper">
    <insert id="add">
        insert into beauty values (null,#{name},#{sex},now(),#{phone},#{boyFriendId})
    </insert>
</mapper>

HTML

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="add" method="post">
    <input type="text" name="name">
    <input type="text" name="sex">
    <input type="text" name="phone">
    <input type="text" name="boyFriendId">
    <input type="submit" value="添加">
</form>
</body>
</html>

4.修改

注:

1.修改的思路是携带用户id到达Acontroller,在Acontroller中根据id查询出用户的信息,返回给修改界面实现用户信息回显

2.再修改页面点击修改时,携带修改信息到达Bcontroller实现修改功能,修改成功后重定向到查询首页

Acontroller

@WebServlet("/queryById")
public class QueryListController extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置编码 开启mybatis 这6行都是固定写法记住就可以了
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        resp.setCharacterEncoding("utf-8");
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSession sqlSession = new SqlSessionFactoryBuilder().build(inputStream).openSession(true);
        GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);

        String id = req.getParameter("id");
        Girl girl = mapper.queryById(Integer.parseInt(id));
        req.setAttribute("girl",girl);
        req.getRequestDispatcher("/update.jsp").forward(req, resp);
    }
}

Bcontroller

package com.example.ks.controller;

import com.example.ks.mapper.GirlMapper;
import com.example.ks.model.Girl;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Date;

@WebServlet("/update")
public class UpdateController extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置编码 开启mybatis 这6行都是固定写法记住就可以了
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        resp.setCharacterEncoding("utf-8");
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSession sqlSession = new SqlSessionFactoryBuilder().build(inputStream).openSession(true);
        GirlMapper mapper = sqlSession.getMapper(GirlMapper.class);

        String id = req.getParameter("id");
        String name = req.getParameter("name");
        String sex = req.getParameter("sex");
        String bornDate = req.getParameter("bornDate");
        String phone = req.getParameter("phone");
        String boyfriend_id = req.getParameter("boyfriend_id");
        System.out.println(bornDate);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = sdf.parse(bornDate);
            System.out.println(date.toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }

        Girl girl = new Girl();
        girl.setId(Integer.parseInt(id));
        girl.setName(name);
        girl.setSex(sex);
        girl.setBornDate(date);
        girl.setPhone(phone);
        girl.setBoyfriend_id(Integer.parseInt(boyfriend_id));
        int res = mapper.update(girl);
        if (res > 0 ){
            resp.sendRedirect("list");
        }

    }
}

mapper

package com.example.ks.mapper;

import com.example.ks.model.Girl;

import java.util.List;

/**
 * 接口
 * 每一个方法名称都与GirlMapper.xml中的id对应
 */
public interface GirlMapper {

    Girl queryById(Integer id);

    int update(Girl girl);
}

xml

<?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.example.ks.mapper.GirlMapper">
    <update id="update">
        UPDATE beauty
        <set>
            <if test="name != null and name != ''">
                name = #{name},
            </if>
            <if test="sex != null and sex != ''">
                sex = #{sex},
            </if>
            <if test="bornDate != null">
                borndate = #{bornDate},
            </if>
            <if test="phone != null and phone != ''">
                phone = #{phone},
            </if>
            <if test="boyfriend_id != null and boyfriend_id != ''">
                boyfriend_id = #{boyfriend_id},
            </if>
        </set>
        WHERE id = #{id}
    </update>
</mapper>

HTML

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="update" method="post">
    <input type="hidden" name="id" value="${girl.id}">
    <label for="name">姓名:</label>
    <input type="text" id="name" name="name" value="${girl.name}"><br>

    <label for="sex">性别:</label>
    <input type="text" id="sex" name="sex" value="${girl.sex}"><br>

    <label for="bornDate">生日:</label>
    <fmt:formatDate value="${girl.bornDate}" pattern="yyyy-MM-dd" var="formattedBornDate" />
    <input type="date" id="bornDate" name="bornDate" value="${formattedBornDate}"><br>

    <label for="phone">手机号:</label>
    <input type="text" id="phone" name="phone" value="${girl.phone}"><br>

    <label for="boyfriend_id">男友ID:</label>
    <input type="text" id="boyfriend_id" name="boyfriend_id" value="${girl.boyfriend_id}"><br>

    <input type="submit" value="更新">
</form>
</body>
</html>

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值