案例-修改-回显数据

文章讲述了如何使用MyBatis通过ID查询数据库中的Brand信息,并将数据回显到update页面以供修改。关键步骤包括在BrandMapper接口中添加@ResultMap注解,确保数据完整显示,以及在SelectByIdServlet中接收ID,调用Service查询数据,并将结果转发到update.jsp页面。在JSP页面中,利用JSTL进行条件判断来实现状态的正确回显。
摘要由CSDN通过智能技术生成

回显就是通过id进行查询:



首先我们要做一个根据id查询,将数据回显到update页面里边

才能进行修改


BrandMapper:

记得给selectById上添加@ResultMap注释,这样才能保证页面上数据的完整

public interface BrandMapper {
    /**
     * 查询所有
     * @return
     */
    @Select("select  * from tb_brand")
    @ResultMap("brandResultMap")
    List<Brand> selectAll();

    /**
     * 添加功能
     * @param brand
     */
    @Insert("insert into tb_brand values(null,#{brandName},#{companyName},#{ordered},#{description},#{status})")
    void add(Brand brand);

    /**
     * 根据id查询   记得添加ResultMao 否则页面上将不展示内容
     * @param id
     * @return
     */
    @Select("select  * from tb_brand where id= #{id}")
    @ResultMap("brandResultMap")
    Brand selectById(int id);
}

BrandService:

public class BrandService {
    SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
    /**
     * 查询所有
     * @return
     */
    public List<Brand> selectAll(){


         //获取sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获取brandMapper
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);

        List<Brand> brands = mapper.selectAll();
        //释放资源
        sqlSession.close();

        return brands;
    }

    /**
     * 添加
     * @param brand
     */
    public void add(Brand brand){
        //获取sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获取brandMapper
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);

        //调用方法
        mapper.add(brand);

        //提交事务
        sqlSession.commit(true);

        sqlSession.close();

    }
     /**
     * 根据id查询
     * @param id
     * @return
     */
    public Brand selectById(int id){


        //获取sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获取brandMapper
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);

        Brand brand = mapper.selectById(id);
        //释放资源
        sqlSession.close();

        return brand;
    }


}

SelectByIdServlet:

@WebServlet("/selectByIdServlet")
public class SelectByIdServlet extends HttpServlet {
    private BrandService service= new BrandService();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.接收id
        String id = request.getParameter("id");
        //2.调用service查询
        Brand brand = service.selectById(Integer.parseInt(id));
        //3.存储到request中
        request.setAttribute("brand",brand);
        //4.转发到update.jsp
        request.getRequestDispatcher("/update.jsp").forward(request,response);

    }

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

这里要注意:描述信息的${brand.description}要写的位置

还有<input>标签里 checked属性的使用,就是默认当前属性,所以我们在做状态的回显时,需要用jstl的id来进行逻辑判断

<%@ page contentType="text/html;charset=UTF-8" language="java"  isELIgnored="false" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>修改品牌</title>
</head>
<body>
<h3>修改品牌</h3>
<form action="/brand-demo/addServlet" method="post">
    品牌名称:<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>

还有在brand.jsp页面跳转SelectByIdServlet页面时,需要注意要给Servlet进行id传参,时这样传递的:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值