tomcat对数据库信息对进行添加操作和修改操作

先在接口方法中添加相应接口方法:

java 复制代码
//添加新产品
    @Insert("insert into db.brand values(null,#{brandName},#{companyName},#{ordered},#{description},#{status})")
    void addBrand(brand brand);

在service中添加对应的方法:

java 复制代码
public void addBrand(brand brand){
String resource = "mybatis-config.xml";
            InputStream inputStream = null;
            inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        brandMapper brandMapper = sqlSession.getMapper(brandMapper.class);
        brandMapper.addBrand(brand);
        sqlSession.commit();
        sqlSession.close();
    }

然后开始写添加新产品的信息jsp

html 复制代码
<%--
  Created by IntelliJ IDEA.
  User: quwenhao
  Date: 2023/12/28
  Time: 19:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加品牌</title>
</head>
<body>
<h3>添加品牌</h3>
<form action="/brandAddService" method="post">
    品牌名称:<input name="brandName"><br>
    企业名称:<input name="companyName"><br>
    排序:<input name="ordered"><br>
    描述信息:<textarea rows="5" cols="20" name="description"></textarea><br>
    状态:<input type="radio" name="status" value="0">禁用
         <input type="radio" name="status" value="1">启用<br>

    <input type="submit" value="提交">
</form>

</body>
</html>

完成后设置表单提交给添加的servlet,下面开始写添加的servlet

java 复制代码
package org.example.web;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import org.example.service.brandService;
import org.example.pojo.brand;

@WebServlet("/brandAddService")
public class brandAddService extends HttpServlet {
    private brandService brandService=new brandService();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //处理post类型乱码问题
        request.setCharacterEncoding("utf-8");

        String brandName = request.getParameter("brandName");
        String companyName = request.getParameter("companyName");
        String ordered = request.getParameter("ordered");
        String description = request.getParameter("description");
        String status = request.getParameter("status");

        //封装成brand对象
        brand brand=new brand();
        brand.setBrandName(brandName);
        brand.setCompanyName(companyName);
        brand.setOrdered(Integer.parseInt(ordered));
        brand.setDescription(description);
        brand.setStatus(Integer.parseInt(status));

        //调用Service添加方法
        brandService.addBrand(brand);

        //转发到查询所有
        request.getRequestDispatcher("/brandSelectAllService").forward(request,response);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

在brand.jsp中我们通过设置了新增按钮来添加信息,<input type="button" value="新增" id="addBrand"><br>。我们可以运用javaScript获取其id为其添加跳转功能

在body标签末尾添加下面代码,添加跳转功能。

html 复制代码
<script>
    document.getElementById("addBrand").onclick=function (){
        location.href="/addBrand.jsp";
    }
</script>

下面是修改操作:想对特定某条信息进行修改,需要先根据id查询到特定的信息,然后在进行修改。

接口方法:

java 复制代码
//根据id查询
    @Select("select * from db.brand where id=#{id}")
    @ResultMap("brandResultMap")
    brand selectByIdBrand(int id);

    //根据id,修改特定的产品的信息
    @Update("update db.brand set brand_Name=#{brandName},company_name=#{companyName},ordered=#{ordered},description=#{description},status=#{status} where id=#{id}")
    void update(brand brand);

service:

java 复制代码
public brand brandSelectById(int id){
String resource = "mybatis-config.xml";
            InputStream inputStream = null;
            inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        brandMapper brandMapper = sqlSession.getMapper(brandMapper.class);
        brand brand = brandMapper.selectByIdBrand(id);

        sqlSession.close();
        return brand;
    }

    public void Update(brand brand){
String resource = "mybatis-config.xml";
            InputStream inputStream = null;
            inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        brandMapper brandMapper = sqlSession.getMapper(brandMapper.class);
        brandMapper.update(brand);
        sqlSession.commit();
        sqlSession.close();
    }

然后写根据id查询到的特定产品的详细信息的jsp:

html 复制代码
<%--
  Created by IntelliJ IDEA.
  User: quwenhao
  Date: 2023/12/28
  Time: 20:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<html>
<head>
    <title>修改品牌</title>
</head>
<body>
<h3>修改品牌</h3>
<form action="/updateServlet" method="post">

<%--    隐藏域,提交id--%>
    <input type="hidden" name="id" value="${brand.id}">

    品牌名称:<input name="brandName" value="${brand.brandName}"><br>
    企业名称:<input name="companyName" value="${brand.companyName}"><br>
    排序:<input name="ordered" value="${brand.ordered}"><br>
    描述信息:<textarea rows="5" cols="20" name="description">${brand.description}</textarea><br>
    状态:
    <c:if test="${brand.status==0}">
        <input type="radio" name="status" value="0" checked>禁用
        <input type="radio" name="status" value="1">启用<br>
    </c:if>
    <c:if test="${brand.status==1}">
    <input type="radio" name="status" value="0">禁用
    <input type="radio" name="status" value="1" checked>启用<br>
    </c:if>

    <input type="submit" value="提交">
</form>

</body>
</html>

然后写的是特定产品的详细信息的Servlet:

java 复制代码
package org.example.web;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

import org.example.pojo.brand;
import org.example.service.brandService;

@WebServlet("/selectByIdService")
public class selectByIdService extends HttpServlet {

    private brandService brandService=new brandService();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.接收id
        String id = request.getParameter("id");
        //2.service查询
        brand brand = brandService.brandSelectById(Integer.parseInt(id));
        //3.存储到request中
        request.setAttribute("brand",brand);
        //4.转发
        request.getRequestDispatcher("/selectById.jsp").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

我们想调用该servlet根据id查询详细信息,需要先知道该信息的id,所以在跳转到该servlet时应把id传过来。所以brand.jsp中修改信息的跳转链接应该这样写,将#改为下面的链接。

html 复制代码
 <td><a href="/selectByIdService?id=${brand.id}">修改</a>

这样我们在打开修改页面的时候,该产品原本的信息会自动填写在文本框中。

修改信息完后,会将该表单提交到updateServlet中,执行修改操作:

java 复制代码
package org.example.web;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import org.example.pojo.brand;
import org.example.service.brandService;

@WebServlet("/updateServlet")
public class updateServlet extends HttpServlet {
    brandService brandService=new brandService();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String brandName = request.getParameter("brandName");
        String companyName = request.getParameter("companyName");
        String ordered = request.getParameter("ordered");
        String description = request.getParameter("description");
        String status = request.getParameter("status");
        String id=request.getParameter("id");

        brand brand=new brand();
        brand.setBrandName(brandName);
        brand.setCompanyName(companyName);
        brand.setOrdered(Integer.parseInt(ordered));
        brand.setDescription(description);
        brand.setStatus(Integer.parseInt(status));
        brand.setId(Integer.parseInt(id));

        brandService.Update(brand);

        request.getRequestDispatcher("/brandSelectAllService").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

这样就可以完成修改操作了

相关推荐
杨杨杨大侠5 小时前
都能接模型、RAG 和 MCP,Java Agent 框架到底差在哪?
java
破茧蝴蝶5 小时前
Python分布式爬虫完整教程
开发语言·python
数据库小学妹5 小时前
国产数据库怎么选?兼容、迁移、核心案例与融合架构四道关
数据库·架构·国产数据库·数据库迁移·融合数据库
狗凯之家源码网5 小时前
全新 PHP 轻量客服聊天室源码深度评测
开发语言·php·聊天室系统
远离UE46 小时前
UE5 Substrate Thin Film 源码拆析
开发语言·javascript·ue5
keyipatience6 小时前
JavaScript学习(1)书写位置,变量、数据类型、运算符
开发语言·前端·javascript·css·学习
Thinker QAQ6 小时前
并发编程(九):BlockingQueue 与 Channel——语言层的原子性、可见性与有序性
java·python·go·并发编程·channel·blockingqueue·message passing
IvorySQL6 小时前
PostgreSQL 日报| PgBouncer 修复三个 CVE 漏洞(10 月 15 日)
数据库·postgresql·区块链
饺子大魔王的男人6 小时前
后台表格、查询、流程总在重复写?我用ToolJet把PostgreSQL直接做成可远程访问的业务系统
数据库·postgresql