当前位置: 首页 > news >正文

Java+MySQL+Mybatis+Junit4实现学生信息管理系统

数据库表创建+数据添加

-- 创建学生信息表CREATETABLE`student`(`id`BIGINTPRIMARYKEYNOTNULLAUTO_INCREMENTCOMMENT'自增主键ID',`studNo`VARCHAR(20)NOTNULLCOMMENT'学号',`name`VARCHAR(50)NOTNULLCOMMENT'姓名',`gender`INTDEFAULT0COMMENT'性别:0-未知 1-男 2-女',`phone`VARCHAR(20)COMMENT'联系电话',`home_address`VARCHAR(255)COMMENT'家庭住址',`class_name`VARCHAR(50)COMMENT'班级名称',`status`INTUNSIGNEDDEFAULT1COMMENT'学籍状态:1-在读 2-休学 3-毕业 4-退学 5-开除')COMMENT='学生基本信息表';INSERTINTO`student_info`(`studNo`,`name`,`gender`,`phone`,`home_address`,`class_name`,`status`)VALUES('202301001','张明',1,'13800138001','浙江省杭州市','计算机科学与技术2023级1班',1),('202301002','李婷',2,'13800138002','辽宁省大连市','计算机科学与技术2023级1班',1),('202302015','王浩',1,'13800138003','北京市','软件工程2023级2班',1),('202201023','赵晓雨',2,'13800138004','上海市','计算机科学与技术2022级1班',2),('202103008','刘阳',1,'13800138005','山东省青岛市','软件工程2021级3班',3);

Java代码实现

项目结构

mybatis配置文件

<?xml version="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><properties resource="db.properties"/><environmentsdefault="dev"><environment id="dev"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver"value="${driver}"/><property name="url"value="${url}"/><property name="username"value="${username}"/><property name="password"value="${password}"/></dataSource></environment></environments><mappers><mapper resource="cn/stud/mapper/StudentMapper.xml"/></mappers></configuration>
<mapper>中需要写入创建的mapper实现xml路径名,才可以访问到 使用${} 将数据库连接内容(db.properties)编译进去

db.properties

这个文件中需要配置自己的数据库信息,数据库名,用户名,密码,我这边用的是MySQL5.1版本,将useSSL=false进行拼接,表示禁用 SSL 加密,低版本一般这样设置

driver=com.mysql.jdbc.Driver url=jdbc:mysql:///local_data?useSSL=false username=root password=123456

SqlSession工具类

packagecn.stud.util;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importjava.io.InputStream;publicclassMybatisConnUtils{privatestaticSqlSessionFactoryssf;static{//获取连接对象try(InputStreaminputStream=Resources.getResourceAsStream("mybatis-config.xml")){//获取sqlSession会话工厂ssf=newSqlSessionFactoryBuilder().build(inputStream);}catch(Exceptione){thrownewRuntimeException(e);}}//获取连接publicstaticSqlSessiongetConn(){returnssf.openSession();}}

Student实体类

packagecn.stud.domain;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;@NoArgsConstructor@AllArgsConstructor@DatapublicclassStudent{//自增主键IDprivatelongid;//学号privateStringstudNo;//姓名privateStringname;//性别:0-未知 1-男 2-女privateintgender;//联系电话privateStringphone;//家庭住址privateStringhome_address;//班级名称privateStringclass_name;//学籍状态:1-在读 2-休学 3-毕业 4-退学 5-开除privateintstatus;}

DAO接口

packagecn.stud.dao;importcn.stud.domain.Student;importjava.util.List;publicinterfaceStudentDAO{voidinsert(Students);voidupdate(Students);voiddel(longid);StudentgetById(longid);List<Student>getAll();}

DAO实现类

packagecn.stud.dao.impl;importcn.stud.dao.StudentDAO;importcn.stud.domain.Student;importcn.stud.util.MybatisConnUtils;importorg.apache.ibatis.session.SqlSession;importjava.util.List;publicclassStudentDAOImplimplementsStudentDAO{privatestaticSqlSessionss=MybatisConnUtils.getConn();@Overridepublicvoidinsert(Students){ss.insert("cn.stud.mapper.StudentMapper.insert",s);ss.commit();}@Overridepublicvoidupdate(Students){ss.update("cn.stud.mapper.StudentMapper.update",s);ss.commit();}@Overridepublicvoiddel(longid){ss.delete("cn.stud.mapper.StudentMapper.del",id);ss.commit();}@OverridepublicStudentgetById(longid){returnss.selectOne("cn.stud.mapper.StudentMapper.getById",id);}@OverridepublicList<Student>getAll(){returnss.selectList("cn.stud.mapper.StudentMapper.getAll");}}

mapper

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="cn.stud.mapper.StudentMapper"><insertid="insert"useGeneratedKeys="true"keyColumn="id"keyProperty="id">insert into student(studNo,name,gender,phone,home_address,class_name,status) values( #{studNo}, #{name}, #{gender}, #{phone}, #{home_address}, #{class_name}, #{status} )</insert><updateid="update">update student set studNo = #{studNo}, name = #{name}, gender = #{gender}, phone = #{phone}, home_address = #{home_address}, class_name = #{class_name}, status = #{status} where id = #{id}</update><deleteid="del">delete from student where id = #{id}</delete><selectid="getById"resultType="cn.stud.domain.Student">select id,studNo,name,gender,phone,home_address,class_name,status from student where id = #{id}</select><selectid="getAll"resultType="cn.stud.domain.Student">select id,studNo,name,gender,phone,home_address,class_name,status from student</select></mapper>

测试类

packagecn.stud.dao.impl;importcn.stud.dao.StudentDAO;importcn.stud.domain.Student;importorg.junit.Test;importstaticorg.junit.Assert.*;publicclassStudentDAOImplTest{privateStudentDAOsd=newStudentDAOImpl();@Testpublicvoidinsert(){Studentstudent=newStudent();student.setStudNo("a1234");student.setName("张张");student.setGender(1);student.setPhone("13321211111");student.setHome_address("住址");student.setClass_name("计算机");student.setStatus(1);sd.insert(student);}@Testpublicvoidupdate(){Studentstudent=newStudent();student.setStudNo("a12345");student.setName("张张1");student.setGender(0);student.setPhone("13321211100");student.setHome_address("住址0");student.setClass_name("计算机8");student.setStatus(2);sd.update(student);}@Testpublicvoiddel(){sd.del(6L);}@TestpublicvoidgetById(){System.out.println(sd.getById(2L));}@TestpublicvoidgetAll(){sd.getAll().forEach(System.out::println);}}
http://www.jsqmd.com/news/958552/

相关文章:

  • 为何VMware上云之路充满挑战?
  • 递归函数的设计方法
  • 1分钟教你如何AI生图
  • 2026年养殖池防渗膜市场新观察:陵县源头厂家的核心价值与选择逻辑 - 2026年企业资讯
  • M4Markets整体表现账户稳吗?
  • 费县实操为主的家电清洗培训学校 行业入门标准与培训流程科普
  • Spring Boot:整合Quartz集群部署指南
  • 动态加密路由系统:策略引擎实战
  • 5分钟部署Office全家桶:零代码自动化安装完整指南
  • Gemma 4 12B本地部署避坑:OMLX后缀、4bit/8bit选择与gemma4_unified报错修复
  • yt-dlp:16万 Star 的命令行音视频下载器
  • 从SATA到PCIe 4.0:你的硬盘接口和协议是怎么‘拖后腿’的?聊聊真实场景下的速度瓶颈
  • 【课程设计/毕业设计】基于springboot+微信小程序的博物馆文创系统的设计与实现文创商品展示与售卖、文化背景讲解【附源码、数据库、万字文档】
  • 2026四川市政管网服务企业排行:四川龙基万市政工程有限公司联系、成都化粪池清理电话号码、成都厂区化粪池清理哪家好选择指南 - 优质品牌商家
  • 别再死磕单体了!从EAI到ServiceMesh,聊聊那些年我们踩过的架构‘坑’
  • Gemini模型部署合规性审查(2024最新监管红线白皮书)
  • UWB自动跟随技术全栈解析:从定位算法到“位控一体化“
  • WS2812B智能灯条全解析:从单线协议到Arduino编程实践
  • 用本地 AI 大模型打造全天候家庭健康守护系统
  • 用Multisim 14.0仿真高频谐振功放:从欠压到过压,手把手教你调出三种工作状态
  • Scorecardpy:Python信用评分卡建模的技术挑战与工程化解决方案
  • Windows可执行文件资源编辑终极指南:rcedit命令行的完整解决方案
  • 告别C盘爆满!保姆级教程:在D盘为Quartus Prime 20.1精简版和Modelsim安个新家
  • 别再只盯着Grafana了!用Docker 5分钟搞定Prometheus+Node Exporter监控你的Linux服务器
  • 国内正火炉实测评测:渗碳炉/烧结炉/网带炉/退火炉/钎焊炉/光亮炉/台车炉/回火炉/淬火炉/正火炉/选择指南 - 优质品牌商家
  • 阳光电源:以光储微网+电控技术 重构零碳无人矿山能源生态
  • K Smallest Sums(多路合并)
  • 《明月别枝》小说|下载|txt
  • 选AI时代企业信源管理方案时,先把合规与全域覆盖放在前面
  • 用LangChain重构期货研报分析流:1天搭建可自动抓取、归因、生成交易建议的AI工作台