根据回复状态、教师姓名、学生姓名(三表连接)实现查询

本文介绍了一种使用MyBatis动态SQL进行复杂条件查询的方法,并结合Spring MVC实现了前端页面的交互式查询功能。具体包括:定义DAO接口进行参数化的SQL查询、配置动态SQL以支持灵活的查询条件组合、编写Controller处理HTTP请求并将查询结果返回给前端展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、实现效果


2、DAO接口写法

List<Interact> selectByStatusAndPerson(@Param("interactStatus")Integer interactStatus,
            @Param("teacherName")String teacherName,@Param("studentName")String studentName);

3、MyBatis动态SQL

<resultMap type="interact" id="interactMap">
        <id column="inteId" property="interactId"/>
        <result column="inteId" property="interactId"/>
        <result column="inteTitle" property="interactTitle"/>
        <result column="inteStatus" property="interactStatus"/>
        <association property="teacher" javaType="teacher"> 
            <id column="teacher_id" property="teacherId"/>
            <result column="teaName" property="teacherName"/>
        </association>
        <association property="student" javaType="student"> 
            <id column="student_id" property="studentId"/>
            <result column="stuName" property="studentName"/>
        </association>        
    </resultMap>
<select id="selectByStatusAndPerson" resultMap="interactMap">
        select inte.interact_id as inteId,
        inte.interact_title as inteTitle,tea.teacher_name as teaName,
        stu.student_name as stuName,inte.interact_status as inteStatus
        from (select * from interact_interact
        <where>
            <if test="interactStatus!=null">
                interact_status = #{interactStatus}
            </if>
        </where>
        ) inte join (select * from interact_teacher
        <where>
            <if test="teacherName!=null">
                teacher_name like '%'||#{teacherName}||'%'
            </if>
        </where> 
        ) tea on inte.teacher_id = tea.teacher_id  
        join (select * from interact_student
        <where>
            <if test="studentName!=null">
                student_name like '%'||#{studentName}||'%'
            </if>
        </where>
        ) stu on inte.student_id = stu.student_id         
        order by inte.create_time desc
    </select>
4、Controller
@RequestMapping("/queryByStatusAndPerson")
    public String queryByStatusAndPerson(Integer interactStatus,
            String teacherName,String studentName,Model model){
        List<Interact> queryByStatusAndPerson = is.queryByStatusAndPerson(interactStatus, teacherName, studentName);
        model.addAttribute("interacts", queryByStatusAndPerson);
        return "teacher/queryInteracts";
    }
5、jsp
<form action="${pageContext.request.contextPath }/teacher/queryByStatusAndPerson.do" method="post" id="queryForm">       
        <div class="input-append" style="padding-left:40px">
        <select class="span3" name="interactStatus" id="sele" style="width: 150px; margin-left: 10px; border-radius:4px;" >
                 <option value="" >请选择回复状态</option>
       			 <option value="0" >未回复</option>
       			 <option value="1">已回复</option>
        </select>      
            <input value="" class="span2" type="text" placeholder="请输入教师姓名" name="teacherName" style="width: 250px; height: 20px;margin-left: 10px; border-radius:4px;"> 
            <input value="" class="span2" type="text" placeholder="请输入学生姓名" name="studentName" style="width: 250px; height: 20px;margin-left: 10px; border-radius:4px;"> 
         	<button class="btn" type="submit" style="margin-left: 10px; border-radius:10px;" >搜索</button>
          </div>
      </form>
建模学生信息管理系统 一、项目背景和功能 为高效管理学生信息、教师信息、课程信息和成绩,提高工作效率,某高校拟开发一个学生信息管理系统。 系统的功能主要包括以下方面: 用户管理:管理员可以添加用户,并给用户分配角色和权限。当用户不再需要访问系统时,管理员可以删除其账户。 学生信息管理:管理员可以录入、修改和删除学生基本信息,包括学号、姓名、性别、出生日期、班级等。教师和管理员和查询学生信息。 学生成绩管理:教师和管理员可以录入、修改、删除和查询学生成绩,学生也可以查询个人学科成绩。 教师信息管理:管理员可以录入新的教师信息,包括姓名、工号、部门等,也可以针对教师信息进行修改。学生教师和管理员都可以查询教师信息。 课程管理:管理员可以录入新的课程信息,包括课程名称、授课教师、课时和学分,也可以修改和删除课程信息。学生教师和管理员都可以查询课程信息。 学生选课:学生可以通过系统选择他们想要上的课程,也可以查询自己的选课情况。 二、作业提交要求 本项目旨在模拟使用统一建模语言UML建模一个学生信息管理系统的过程,并配以原型设计创建产品的简化版本或模型来测试和验证设计思路、功能和用户体验。 包括两个部分,UML建模和原型设计。其中,建模UML图分数占比80%,系统原型设计分数占比20%。 1.需求建模 (1)用例图:绘制系统用例图,并编写相应的用例文档。 ①描述系统的主要功能; ②分析并定义系统参与者以及他们与系统的交互。 2.结构建模 (1)类图:建模系统的实体类图,定义系统中实体类及其属性,并描述类与类之间的关系(泛化、实现、依赖、关联)。 系统中的类包括以下内容等: 用户(User)类:包含用户ID(userID)、用户名(userName)、密码(password)、角色(role)等。 学生(Student)类:包含学号(studentID)、姓名(stuName)、班级(classID)、性别(gender)、出生日期(birthday)、专业(major)等。 教师(Teacher)类:包含工号(teacherID)、姓名(teaName)、性别(gender)、院系(department)、所教班级(class)、所教课程(course)等。 管理员(Administrators)类:包含工号(adminID)、姓名(adminName)等。 课程(Course)类:包含课程编号(courseID)、课程名称(courseName)、学分(credits)、任课教师(teacher)等。 选课信息(Enrollment)类:包含选课记录编号(enrollmentID)、选课学生(student)、所选课程(course)、成绩(grade)、选课时间(enrollmentTime)等。 3.行为建模 (1)活动图:绘制活动图,描述系统中的业务活动。 部分业务活动如下所示: ①学生选课:开始 -> 学生登录系统并进入选课界面 -> 学生浏览可选课程列 -> 学生选择课程并提交选课请求 -> 检查学生选课限制(如学分限制、课程冲突等) -> 分支:是(选课请求有效):保存选课信息并通知学生选课成功;否(选课请求无效):显示错误消息并重新请求选课 -> 结束活动:学生选课完成。 ②教师确认选课:开始 -> 教师登录系统并进入选课管理界面 -> 教师查看选课学生 -> 教师确认选课或拒绝选课 -> 决策:根据教师操作更新选课状态 -> 分支:是(选课被确认):通知学生选课已确认;否(选课被拒绝):通知学生选课被拒绝 -> 结束活动:选课确认完成。 (2)状态图:描述类的对象在其生命周期中的行为,即状态的变化、触发状态变化的事件以及状态变化时的动作。 学生状态图:展示学生从未注册、已注册、选课、学习到毕业的整个生命周期中的状态变迁。 课程状态图:展示课程从未创建、已创建、开放选课、课程进行中到课程结束结束的整个生命周期中的状态变迁。 教师状态图:展示教师从未入职、入职、授课到离职的整个生命周期中的状态变迁。 学生选课状态图:描述学生在选课过程中的状态变迁,如未选课、选课、等待审核、选课成功或失败、退课等。 (3)顺序图:使用MVC模式描述对象之间交互的顺序关系,并绘制顺序图。 部分业务活动的交互流程如下: ①学生选课 学生向选课服务发送选课请求,指定要选择的课程。 选课服务接收请求并处理(如检查学生是否满足选课条件、课程是否还有空余名额)。 选课服务向学生发送选课结果(成功或失败)。 如果选课成功,学生收到确认消息,选课信息被添加到系统中。 教师登录系统后,选课服务可以向教师发送选课通知,告知有学生选择了他们的课程。 ②添加学生 管理员向学生信息服务发送添加学生请求,包含学生信息。 学生信息服务接收请求并处理(如检查学生ID是否唯一)。 学生信息服务向管理员发送处理结果(成功或失败)。 如果成功,管理员收到确认消息,学生信息被添加到系统中。 (4)协作图:绘制协作图,建模对象对象间的交互过程及对象间的关联关系。
最新发布
06-06
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值