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=123456SqlSession工具类
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);}}