Day19_学点儿JavaEE_学生表和班级表连接查询并显示、带查询班级表的学生信息添加、带查询班级并回显的学生信息修改

这篇具有很好参考价值的文章主要介绍了Day19_学点儿JavaEE_学生表和班级表连接查询并显示、带查询班级表的学生信息添加、带查询班级并回显的学生信息修改。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 目标效果预览

1.1 展示学生信息时,多添加一列展示所属班级(班级表是另一个表)

Day19_学点儿JavaEE_学生表和班级表连接查询并显示、带查询班级表的学生信息添加、带查询班级并回显的学生信息修改,JavaEE,java-ee,数据库,java,前端

1.2 添加学生信息时,多一行班级选择(班级表是另一个表)

Day19_学点儿JavaEE_学生表和班级表连接查询并显示、带查询班级表的学生信息添加、带查询班级并回显的学生信息修改,JavaEE,java-ee,数据库,java,前端

1.3 点击“编辑”后,修改学生信息时,查询其所属班级并默认选中

Day19_学点儿JavaEE_学生表和班级表连接查询并显示、带查询班级表的学生信息添加、带查询班级并回显的学生信息修改,JavaEE,java-ee,数据库,java,前端

2 学生表和班级表连接查询并显示(Value Object)

重新封装要展示的信息为一个类,并编写相应的Servlet、Service、Dao
Day19_学点儿JavaEE_学生表和班级表连接查询并显示、带查询班级表的学生信息添加、带查询班级并回显的学生信息修改,JavaEE,java-ee,数据库,java,前端
Day19_学点儿JavaEE_学生表和班级表连接查询并显示、带查询班级表的学生信息添加、带查询班级并回显的学生信息修改,JavaEE,java-ee,数据库,java,前端

StudentBanjiVO

/*
 * 适度编码益脑,沉迷编码伤身,合理安排时间,享受快乐生活。
 * Copyright @TangXJ
 * Created by TangXJ
 * Created&Used date: 2024/4/8 下午3:13 ~ 2024/4/8 下午3:18
 * Modified date: 2024/4/8 下午3:14
 */

package com.sdust.web.pojo.vo;

//VO:Value Object
public class StudentBanjiVO {
    private Integer id;
    private String name;
    private Integer age;
    private String gender;
    private Integer banjiId;
    private String banjiName;

    public StudentBanjiVO() {
    }

    public StudentBanjiVO(Integer id, String name, Integer age, String gender, Integer banjiId, String banjiName) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.banjiId = banjiId;
        this.banjiName = banjiName;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Integer getBanjiId() {
        return banjiId;
    }

    public void setBanjiId(Integer banjiId) {
        this.banjiId = banjiId;
    }

    public String getBanjiName() {
        return banjiName;
    }

    public void setBanjiName(String banjiName) {
        this.banjiName = banjiName;
    }

    @Override
    public String toString() {
        return "StudentBanjiVO{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                ", banjiId=" + banjiId +
                ", banjiName='" + banjiName + '\'' +
                '}';
    }
}

连接查询

学点儿数据库_Day11_多表、等值连接、内连接、模糊查找

SELECT s.id,s.`name`,s.age,s.gender,b.id as banji_id,b.`name` AS banji_name
FROM student AS s INNER JOIN banji AS b
ON s.banji_id=b.id
ORDER BY s.id
LIMIT 0,5

StudentDaoImply

@Override
    public List<StudentBanjiVO> selectByPage(int offset, Integer pageSize) {
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        List<StudentBanjiVO> list = new ArrayList<>();
        try {
            connection = JDBCUtil.getConnection();
            String sql = "SELECT s.id,s.`name`,s.age,s.gender,b.id as banji_id,b.`name` AS banji_name\n" +
                    "FROM student AS s INNER JOIN banji AS b\n" +
                    "ON s.banji_id=b.id\n" +
                    "ORDER BY s.id\n" +
                    "LIMIT ?,? ";
            statement = connection.prepareStatement(sql);
            statement.setInt(1, offset);
            statement.setInt(2, pageSize);
            System.out.println(statement);
            resultSet = statement.executeQuery();
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                String gender = resultSet.getString("gender");
                int banjiId = resultSet.getInt("banji_id");
                String banjiName = resultSet.getString("banji_name");
                StudentBanjiVO student = new StudentBanjiVO(id, name, age, gender, banjiId, banjiName);
                list.add(student);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return list;
    }

3 带查询班级表的学生信息添加

写一套班级的servlet、service、dao,然后在StudentServlet里边的toUpdate调用一下班级的查询service,一起发送到student_add.jsp即可
这就是三层架构、解耦合的“威力”

private void updateQuery(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("StudentServlet.updateQuery");

        String queryId = req.getParameter("id");
        Student student = studentService.selectById(Integer.parseInt(queryId));
        List<Banji> banjiList = banjiService.selectAll();//1.第一句

        //把数据放到req里面
        req.setAttribute("student", student);
        req.setAttribute("banjiList", banjiList);//2.第二句
        //转发到student_list.jsp页面进行展示
        req.getRequestDispatcher("student_update.jsp").forward(req, resp);
    }

student_add.jsp

<%@ page import="java.util.List" %>
<%@ page import="com.sdust.web.pojo.entity.Banji" %><%--
  ~ 适度编码益脑,沉迷编码伤身,合理安排时间,享受快乐生活。
  ~ Copyright @TangXJ
  ~ Created by TangXJ
  ~ Created&Used date: 2024/4/3 下午2:21 ~ 2024/4/8 下午4:00
  ~ Modified date: 2024/4/8 下午4:00
  --%>

<%--
  Created by IntelliJ IDEA.
  User: TangXJ
  Date: 2024/4/3
  Time: 14:21
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%--<form action="/student?method=add" method="get">--%>
    <%--默认就是get ?method=就是get方法传参  会被覆盖  所以form表单一般不用--%>
    <%
        List<Banji> banjiList = (List<Banji>) request.getAttribute("banjiList");
    %>
    <form action="/student?method=add" method="post"><%--默认就是get ?method=就是get方法传参  会被覆盖  所以form表单一般不用--%>
        姓名:<input type="text" name="name"><br>
        年龄:<input type="text" name="age"><br>
        性别:<input type="text" name="gender"><br>
        班级:<select name="banjiId">
            <%
                for (Banji banji : banjiList) {
            %>
            <option value="<%=banji.getId()%>"><%=banji.getName()%></option>
            <%
                }
            %>
        </select><br>
        <input type="submit" value="添加">
    </form>
</body>
</html>

4 带查询班级并回显的学生信息修改

Day19_学点儿JavaEE_学生表和班级表连接查询并显示、带查询班级表的学生信息添加、带查询班级并回显的学生信息修改,JavaEE,java-ee,数据库,java,前端

<select name="class">
    <%
        // 假设classList是从Servlet传递过来的班级列表,每个班级对象包含id和name属性
        for (ClassInfo classInfo : classList) {
            // 根据学生ID和班级ID是否一致来确定哪个选项应该被选中
            String selected = (student.getId() == classInfo.getId()) ? "selected" : "";
    %>
            <option value="<%= classInfo.getId() %>" <%= selected %>><%= classInfo.getName() %></option>
    <%
        }
    %>
</select>

student_update.jsp文章来源地址https://www.toymoban.com/news/detail-850540.html

<%@ page import="com.sdust.web.pojo.entity.Student" %>
<%@ page import="java.util.List" %>
<%@ page import="com.sdust.web.pojo.entity.Banji" %><%--
  ~ 适度编码益脑,沉迷编码伤身,合理安排时间,享受快乐生活。
  ~ Copyright @TangXJ
  ~ Created by TangXJ
  ~ Created&Used date: 2024/4/3 下午2:54 ~ 2024/4/8 下午4:19
  ~ Modified date: 2024/4/8 下午4:19
  --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        //JSP脚本,这里面可以任意写java代码
        //request、response:JSP内置对象
        Student student = (Student) request.getAttribute("student");
        List<Banji> banjiList = (List<Banji>) request.getAttribute("banjiList");
        System.out.println(student);
        System.out.println(banjiList);
    %>

    <%--<form action="/student?method=update&id=<%=student.getId()%>" method="post">--%><%--默认就是get ?method=就是get方法传参  会被覆盖  所以form表单一般不用--%>
    <form action="/student?method=update" method="post" onsubmit="return update_confirm()"><%--默认就是get ?method=就是get方法传参  会被覆盖  所以form表单一般不用--%>
        <input type="hidden" name="id" value="<%=student.getId()%>"/>
        <%--<input type="hidden" name="id" value="<%=student.getId()%>"/>--%><%--readonly 可以删掉F12!! 以后学后端验证--%>
        姓名:<input type="text" name="name" value="<%=student.getName()%>"><br>
        年龄:<input type="text" name="age" value="<%=student.getAge()%>"><br>
        性别:<input type="text" name="gender" value="<%=student.getGender()%>"><br>
        班级:<select name="banjiId">
                <%
                    for (Banji banji : banjiList) {
                        String selected = (student.getBanjiId() == banji.getId()) ? "selected" : "";
                %>
                <option value="<%=banji.getId()%>" <%=selected%>><%=banji.getName()%></option>
                    <%
                    }
                %>
            </select><br>
        <input type="submit" value="更新">
    </form>

    <script>
        function update_confirm(){
            return confirm("您确认要更新吗?");
        }
    </script>
</body>
</html>

到了这里,关于Day19_学点儿JavaEE_学生表和班级表连接查询并显示、带查询班级表的学生信息添加、带查询班级并回显的学生信息修改的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL---多表联合查询(上)(多表关系、外键约束、学生成绩多表关系、交叉连接查询)

    1. 多表关系 MySQL 多表之间的关系可以概括为: 一对一:        比如:一个学生只有一张身份证;一张身份证只能对应一学生。        实现原则:在任一表中添加唯一外键,指向另一方主键,确保一对一关系。         一般一对一关系很少见,遇到一对一关系的表最好是

    2024年02月05日
    浏览(43)
  • 了解JVM(JavaEE初阶系列19)

    目录 前言: 1.JVM是如何运行的 2.JVM中的内存区域划分 3.JVM的类加载机制 3.1JVM加载机制的五大步骤 3.1.1加载 3.1.1验证 3.1.1准备 3.1.1解析 3.1.1初始化 3.2总结 3.3JVM启动时机 3.4双亲委派模型 4.JVM中的垃圾回收策略 4.1JVM垃圾回收机制概念 4.2垃圾回收策略 4.2.1判断引用是否有指向 4

    2024年02月10日
    浏览(27)
  • MySQL查询——为表和字段取别名

    在前面介绍分组查询、集合函数查询和嵌套子查询内容中,有的地方使用 AS 关键 字为查询结果中的某一列指定一个特定的名字。在内连接查询时,则对相同的表 fruits 分别指定两 个不同的名字,这里可以为字段或者表取一个别名,在查询时,使用别名替代其指定的内容,下

    2024年02月09日
    浏览(38)
  • 几种常见数据库的表和列信息查询

    工作中如果和第三方做接口或者抽取数据,经常会用到不同的数据库的表结构信息以及列信息查询,本篇将简单总结一下 oracle,mysql,sqlsever 的表结构信息查询。 输出信息包括: 列名称,列类型,列长度,精度等信息 2.4.1 schemata 数据库信息 2.4.2 tables表信息 2.4.3 columns列信息 列

    2024年02月08日
    浏览(32)
  • mybatis-plus分页查询(springboot中实现单表和多表查询)

    一、mybatis-plus单表查询 使用mybatis-plus实现单表分页查询 非常方便,主要操作步骤如下: 配置分页查询拦截器 进行分页查询 1.首先,打开mybatis-plus官网的插件(插件主体) 或者点击mybatis-plus插件 我是配置在springboot项目中,所以找到springboot的分页配置 2.配置分页查询拦截器

    2024年02月08日
    浏览(32)
  • 表和数据连接,而不是和表连接(JOIN)

    在使用JOIN连接临时表或子查询时,无法保证结果的顺序与特定值的顺序完全一致。这是因为在查询过程中,数据库优化器可能会选择不同的执行计划,导致结果的顺序发生变化。 在下面的示例中,我们在临时表(或子查询)temp_table中添加了一个sort_order列,用于指定特定值的

    2024年02月08日
    浏览(19)
  • 完整javaEE学生信息管理系统

    1.开发环境 操作系统不限:java特性,一套代码,导出运行 jdk版本不限:推荐jdk1.8 tomcat版本不限:推荐Tomcat8.0 数据库mysql:版本不限,推荐mysql8.0以下 开发工具:eclipse/idea 版本不限 2.开发框架 项目框架:servlet+jsp+mysql+layui+ajax+jquery 3.整体业务 本系统分为三种权限: 1.学生:

    2024年02月08日
    浏览(31)
  • html表和连接css的方法

    CSS叫层叠样式表,用来美化HTML, 也可以配合脚本动态的改变样式 提供代码复用, 与HTML代码分离,方便后期维护 1、CSS样式与HTML标签在一起 在标签内,引入style 2、css样式与html标签分离,但不出,使用 给标签id,css中用(#id名字)做连接 3、css文件和html文件分离 1.得有html和css文件

    2024年02月08日
    浏览(29)
  • javaEE+mysql学生竞赛管理系统

    本系统是基于JAVA平台开发的一套学生竞赛信息管理的系统。系统采用JSP为编程语言。数据库采用Mysql建立数据之间的转换。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。 本课题的目的是使

    2024年02月02日
    浏览(18)
  • 基于javaEE学生选课系统(计算机毕业设计完整项目代码)

    系统可以实现学生选课的一些重要功能,如:课程的添加、删除,信息查询、选课、生成课表,以及学生选课管理人员、用户个人信息的维护等。学生选课系统主要是为学生选课的管理提供全面、准确、科学的管理方法,方便快捷地处理选课的管理信息;避免了信息处理错误

    2024年02月08日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包