MyBatis注解开发实现学生管理页面(分页pagehelper,多条件搜索,查看课程信息)

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>studentSystemWork</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version><scope>runtime</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--servlet--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><!--jackson--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.7.3</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.7.3</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.7.3</version></dependency><!--StringUtils--><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!-- Beanutils --><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.8.3</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version></dependency><!-- DBUtils --><dependency><groupId>commons-dbutils</groupId><artifactId>commons-dbutils</artifactId><version>1.6</version></dependency><!--log4j--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--c3p0--><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5</version></dependency><!--分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.10</version></dependency></dependencies></project>

index.html

<!DOCTYPE html>
<html><head><title></title><meta charset="UTF-8"><link rel="stylesheet" href="element-ui-2.13.0/lib/theme-chalk/index.css" /><script type="text/javascript" src="vue/vue-v2.6.10.js"></script><script type="text/javascript" src="element-ui-2.13.0/lib/index.js"></script><script type="text/javascript" src="vue/axios-0.18.0.js"></script>
</head><body>
<div id="app"><template><el-table :data="tableData" @selection-change="handleSelectionChange" size="medium"highlight-current-row="true" style="width: 100%"><el-table-column type="selection" width="55" prop="sid"></el-table-column><el-table-column width="100px" label="序号" type="index"></el-table-column><el-table-column label="姓名" prop="sname"></el-table-column><el-table-column label="性别" prop="gender"></el-table-column><el-table-column label="班级" prop="tbClass.caption"></el-table-column><el-table-column><template slot="header" slot-scope="scope"><el-input v-model="search" size="mini" placeholder="请输入姓名" /></template></el-table-column><!-- <el-table-column><template slot="header" slot-scope="scope"><el-select v-model="cid" placeholder="请选择班级"><el-option v-for="item in classes":key="item.cid":label="item.caption":value="item.cid"></el-option></el-select></template></el-table-column> --><el-table-column><template slot="header" slot-scope="scope"><el-radio v-model="sex" label="男">男</el-radio><el-radio v-model="sex" label="女">女</el-radio></template></el-table-column><el-table-column><template slot="header" slot-scope="scope"><el-button type="success" @click="findAll()">搜索</el-button></template><template slot-scope="scope"><el-button size="mini" @click="handleLook(scope.$index, scope.row)">查看课程信息</el-button></template></el-table-column></el-table></template><br /><el-row><el-button type="warning" @click="delAll()">删除选中</el-button></el-row><template><div class="block" align="right"><el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange":current-page="currentPage" :page-sizes="[3, 4, 5, 6]" :page-size="pageSize"layout="total, sizes, prev, pager, next, jumper" :total="totalCount"></el-pagination></div></template><!-- 查看课程信息 --><el-dialog title="查看课程信息" :visible.sync="dialogFormVisible"><el-form ref="ruleForm" :model="ruleForm" label-width="80px"><el-form-item label="学生姓名"><el-input v-model="ruleForm.sname" style="width: 210px;" readonly></el-input></el-form-item></el-form><el-table :data="tableCourse" @selection-change="handleSelectionChange" size="medium"highlight-current-row="true" style="width: 100%"><el-table-column width="100px" label="序号" type="index"></el-table-column><el-table-column label="课程" prop="courses[0].cname"></el-table-column><el-table-column label="成绩" prop="num"></el-table-column><el-table-column label="老师" prop="courses[0].teacher.tname"></el-table-column></el-table></el-dialog>
</div>
</body>
<script>axios.defaults.withCredentials = truenew Vue({el: "#app",data: {/*表格数据*/tableData: [],tableCourse: [],/*条件查询关键字*/search: '',sex: "",//批量删除存放选中的复选框multipleSelection: [],//存放删除的数据delarr: [],//当前页currentPage: 1,//每页显示条数pageSize: 3,//总条数totalCount: '',//总页数totalPage: '',// 是否展示课程信息对话框dialogFormVisible: false,ruleForm: {sid: '',sname: '',gender: '',tbClass: '',class_id: '',},},methods: {findAll() {let param = new URLSearchParams();param.append("type", "showStuByPage");param.append("page", this.currentPage);param.append("rows", this.pageSize);param.append("sname", this.search);param.append("gender", this.sex);axios({method: "post",url: "http://localhost:8080/studentSystemWork_war_exploded/studentServlet",data: param}).then(obj => {this.tableData = obj.data.list;this.totalCount = obj.data.total;});},handleSizeChange: function (size) {this.pageSize = size;this.findAll();},handleCurrentChange: function (currentPage) {this.currentPage = currentPage;this.findAll();},delAll() {//获取删除的IDthis.delarr = [];for (let i = 0; i < this.multipleSelection.length; i++) {this.delarr.push(this.multipleSelection[i].sid);}//判断要删除的文件是否为空if (this.delarr.length == 0) {this.$message.warning("请选择要删除的数据!")} else {this.$confirm("是否确认删除?", "提示", { type: 'warning' }).then(() => {//点击确认删除let param = new URLSearchParams();param.append("sids", this.delarr.join())param.append("type", "deleteStudents")axios({method: "post",url: "http://localhost:8080/studentSystemWork_war_exploded/studentServlet",data: param}).then(obj => {if (obj.data) {this.$message.success("删除成功!");setTimeout(function () {window.location.href = "index.html"}, 1500)} else {this.$message.error("删除失败!")}});});}},handleSelectionChange(val) {this.multipleSelection = val;},handleLook(index, row) {this.dialogFormVisible = true;this.ruleForm = row;let param = new URLSearchParams();param.append("type","getStudentCourseById")param.append("sid",row.sid);axios({method: "post",url: "http://localhost:8080/studentSystemWork_war_exploded/scoreServlet",data: param}).then(obj => {this.tableCourse = obj.data;});},},created() {this.findAll();}})
</script></html>

studentDao

package com.etime.dao;import com.etime.pojo.Student;
import com.etime.pojo.TbClass;
import org.apache.ibatis.annotations.*;import java.util.List;public interface StudentDao {@Select({"<script> select count(*) from student " +"<where>  " +"<if test = \"sname != ''\"> " +"and sname like concat('%',#{sname},'%')  " +"</if>  " +"<if test = \"gender != ''\"> " +"and gender = #{gender} " +"</if> " +"</where> </script>"})int getCountStudent(Student student);@Select({"<script> select * from student " +"<where>  " +"<if test = \"sname != ''\"> " +"and sname like concat('%',#{sname},'%')  " +"</if>  " +"<if test = \"gender != ''\"> " +"and gender = #{gender} " +"</if> " +"</where> </script>"})@Results({@Result(property = "sid",column = "sid"),@Result(property = "gender",column = "gender"),@Result(property = "class_id",column = "class_id"),@Result(property = "sname",column = "sname"),@Result(property = "tbClass",column = "class_id",javaType = TbClass.class,one = @One(select = "com.etime.dao.TbClassDao.getClassByCid"))})List<Student> showStuByPage(Student student);@Delete({"<script>delete from student where sid in " +"<foreach collection=\"list\" open=\"(\" close=\")\" item=\"sid\" separator=\",\"> " +"#{sid} " +"</foreach>" +"</script>"})int deleteStudents(List<Integer> list);
}

具体完整代码看资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/130732.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PowerShell pnpm : 无法加载文件 C:\Users\lenovo\AppData\Roaming\npm\pnpm.ps1

1、右键点击【开始】&#xff0c;打开Windows PowerShell&#xff08;管理员&#xff09; 2、运行命令set-ExecutionPolicy RemoteSigned 3、根据提示&#xff0c;输入A,回车 此时管理员权限已经可以运行pnpm 如果vsCode还报该错误 继续输入 4、右键点击【开始】&#xff0c;打…

澳大利亚教育部宣布ChatGPT将被允许在澳学校使用!

教育部长最近宣布&#xff0c;从 2024 年起&#xff0c;包括 ChatGPT 在内的人工智能将被允许在所有澳大利亚学校使用。 &#xff08;图片来源&#xff1a;卫报&#xff09; 而早些时候&#xff0c;澳洲各高校就已经在寻找与Chatgpt之间的平衡了。 之前&#xff0c;悉尼大学就…

Mac电脑交互式原型设计 Axure RP 8汉化最新 for mac

Axure RP 8是一款专业且快速的原型设计工具&#xff0c;主要用于定义需求、规格、设计功能和界面。这款工具主要适用于用户体验设计师、交互设计师、业务分析师、信息架构师、可用性专家和产品经理等职业。 Axure RP 8的主要特性包括能够快速设计出应用软件或Web网站的线框图、…

竞赛选题 深度学习 机器视觉 人脸识别系统 - opencv python

文章目录 0 前言1 机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别 2 深度学习-人脸识别过程人脸检测人脸识别Metric Larning 3 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 人脸识别系统 该项目…

XSS原理

原理&#xff1a; 这是一种将任意 Javascript 代码插入到其他Web用户页面里执行以达到攻击目的的漏洞。攻击者利用浏览器的动态展示数据功能&#xff0c;在HTML页面里嵌入恶意代码。当用户浏览改页时&#xff0c;这些潜入在HTML中的恶意代码会被执行&#xff0c;用户浏览器被攻…

消息队列 Kafka

Kafka Kafka 是一个分布式的基于发布/订阅模式的消息队列&#xff08;MQ&#xff0c;Message Queue&#xff09;&#xff0c;主要应用于大数据实时处理领域 为什么使用消息队列MQ 在高并发环境下&#xff0c;同步请求来不及处理会发生堵塞&#xff0c;从而触发too many conne…

【开题报告】如何借助chatgpt完成毕业论文开题报告

步骤 1&#xff1a;确定论文主题和研究问题 首先&#xff0c;你需要确定你的论文主题和研究问题。这可以是与软件开发、算法、人工智能等相关的任何主题。确保主题具有一定的研究性和可行性。 步骤 2&#xff1a;收集相关文献和资料 在开始撰写开题报告之前&#xff0c;收集相…

ACK 云原生 AI 套件:云原生 AI 工程化落地最优路径

作者&#xff1a;胡玉瑜(稚柳) 前言 在过去几年中&#xff0c;人工智能技术取得了突飞猛进的发展&#xff0c;涵盖了机器学习、深度学习和神经网络等关键技术的重大突破&#xff0c;这使得人工智能在各个领域都得到广泛应用&#xff0c;对各行各业产生了深远的影响。 特别值…

Virtual Box + Vagrant 快速搭建 Linux 虚拟开发环境

Virtual Box Vagrant 快速搭建 Linux 虚拟开发环境 1、根据自己所使用的操作系统平台&#xff0c;选择下载对应的虚拟机客户端软件 Virtual Box 并进行安装&#xff0c;这里选择的是 Virtual Box 7.0.10 Windows hosts 平台安装包。 选择安装目录为其他盘&#xff0c;避免默认…

360 G800行车记录仪,不使用降压线如何开机,8芯插头的定义。

G800记录仪的插头是这样的&#xff0c;图中标出了线的颜色。其中红色为常电V&#xff0c;黑色为GND负极&#xff0c;黄色为ACC受车是否启动控制。 这个记录仪原装的电源线没有降压功能&#xff0c;所以这里的V是12V。 记录仪内部有电源板&#xff0c;负责将12V降压为5V。 如果…

vue打印功能

安装 vue3-print-nb yarn add vue3-print-nb //或 npm install vue3-print-nbmain.js中引入 vue3-print-nb import { createApp } from vue; import App from ./App.vue; const app createApp(App); // 打印插件 import print from vue3-print-nb app.use(print) //页面内引…

如何找到新媒体矩阵中存在的问题?

随着数字媒体的发展&#xff0c;企业的新媒体矩阵已成为品牌推广和营销的重要手段之一。 然而&#xff0c;很多企业在搭建新媒体矩阵的过程中&#xff0c;往往会忽略一些问题&#xff0c;导致矩阵发展存在潜在风险&#xff0c;影响整个矩阵运营效果。 因此&#xff0c;找到目前…