当前位置: 首页 > 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.gsyq.cn/news/1470228.html

相关文章:

  • 为何VMware上云之路充满挑战?
  • 2026年养殖池防渗膜市场新观察:陵县源头厂家的核心价值与选择逻辑 - 2026年企业资讯
  • 1分钟教你如何AI生图
  • Spring Boot:整合Quartz集群部署指南
  • yt-dlp:16万 Star 的命令行音视频下载器
  • 从SATA到PCIe 4.0:你的硬盘接口和协议是怎么‘拖后腿’的?聊聊真实场景下的速度瓶颈
  • 2026四川市政管网服务企业排行:四川龙基万市政工程有限公司联系、成都化粪池清理电话号码、成都厂区化粪池清理哪家好选择指南 - 优质品牌商家
  • Gemini模型部署合规性审查(2024最新监管红线白皮书)
  • UWB自动跟随技术全栈解析:从定位算法到“位控一体化“
  • 别再死磕单体了!从EAI到ServiceMesh,聊聊那些年我们踩过的架构‘坑’
  • Scorecardpy:Python信用评分卡建模的技术挑战与工程化解决方案
  • WS2812B智能灯条全解析:从单线协议到Arduino编程实践
  • 选AI时代企业信源管理方案时,先把合规与全域覆盖放在前面
  • 别再死磕NRF24L01了!手把手教你用安信可NF-02模组(Si24R1)实现低成本替换(附完整驱动代码)
  • 阳光电源:以光储微网+电控技术 重构零碳无人矿山能源生态
  • 中国取暖器工厂主要分布在哪里?
  • 推荐靠谱的房屋装修公司 - myqiye
  • JVM 内存模型深度解析:从原理到实战调优
  • 智能汽车AI工具整合不是选型问题,而是时间窗口问题:2024Q3起ECU算力认证新规倒逼重构的4大技术支点
  • DTD 属性:定义文档类型与验证结构的重要元素
  • 别再傻傻分不清!一张图搞懂内存、硬盘、缓存(RAM/ROM/Cache)在电脑里到底怎么干活
  • 电动伸缩门安装哪家好?红门机电,服务苏皖! - mypinpai
  • CaptfEncoder V3:一个网络安全工程师的瑞士军刀是如何炼成的?
  • CVE-2026-45618深度剖析:从原型污染到沙箱逃逸,LiquidJS满分RCE漏洞全解(月下载730万+、在野利用、PoC公开)
  • 终极Windows驱动清理指南:DriverStore Explorer轻松释放20GB+空间
  • 《娇养祸水》小说|下载|txt
  • 6 个适合搭配 WorkBuddy 使用的开源工具
  • delta 0.19.2 官方版下载(夸克网盘+百度网盘,SHA256校验)
  • 2026年成都子女抚养纠纷律所可靠度排行盘点 - 优质品牌商家
  • 2026石笼网围栏厂家选型技术推荐:四川双边丝护栏网/四川围栏网/四川学校球场围栏/四川护栏网/避坑与优配逻辑 - 优质品牌商家