MyBatis——学生信息查询系统
Posted 基础较差的cs菜鸟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis——学生信息查询系统相关的知识,希望对你有一定的参考价值。
MyBatis——学生信息查询系统
实验要求
本实验要求根据表1在数据库中创建一个t_student表,并利用动态SQL进行条件查询、更新和复杂查询操作的相关知识完成一个学生信息查询系统。
实验内容
学生编号(id) | 学生姓名(sname) | 学生学号(sno) | 学生专业(smajor) |
---|---|---|---|
1 | 张三 | 001 | 电气工程及自动化 |
2 | 李四 | 002 | 自动化 |
3 | 王五 | 003 | 测控 |
4 | 悟空 | 999 | 降妖除魔 |
5 | Hades | 985 | 计算机科学与技术 |
该学生信息查询系统需要实现以下几个功能:
- 多条件查询。
- 当用户输入的学生姓名不为空时,则只根据学生姓名进行学生信息的查询。
- 当用户输入的学生姓名为空而学生专业不为空时,则只根据学生专业进行学生信息的查询。
- 当用户输入的学生姓名和学生专业都为空时,则要求查询出所有学号不为空的学生信息。
- 单条件查询出所有id值小于5的学生的信息。
实验分析
本实验主要考查对MyBatis的动态SQL的掌握。
- 建立好实验所需的数据库及表。
- 需要在项目的src/main/resource目录下创建数据库连接的配置文件和MyBatis的核心配置文件和mapper文件夹。
- 再在src/main/java下创建一个实体类Student,编写学生的基本信息;再创建工具类MyBatisUtils。
- 最后在src/test/java下创建一个测试类Test1完成实验内容。
代码实现
Resource
db.properties(数据库连接配置文件)
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&\\ characterEncoding=utf8&useUnicode=true&useSSL=false
username=root
password=1
mybatis-config.xml(MyBatis的核心配置文件)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 环境配置 -->
<!-- 加载类路径下的属性文件 -->
<properties resource="db.properties"> </properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 数据库连接相关配置,db.properties文件中的内容 -->
<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="mapper/StudentMapper.xml"/>
</mappers>
</configuration>
StudentMapper.xml(映射文件)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cqust.pojo.Student">
<select id="findStudentBySnameAndSmajor" parameterType="com.cqust.pojo.Student" resultType="com.cqust.pojo.Student">
select * from t_student where 1=1
<choose>
<when test="sname !=null and sname !='' ">
and sname like concat ('%',#sname,'%')
</when>
<when test="smajor !=null and smajor !='' ">
and smajor like concat ('%',#smajor,'%')
</when>
<otherwise>
and sno is not null
</otherwise>
</choose>
</select>
<select id="findStudentById" parameterType="java.util.Arrays" resultType="com.cqust.pojo.Student">
select * from t_student where id in
<foreach collection="list" item="id" index="index"
open="(" separator="," close=")">
#id
</foreach>
</select>
</mapper>
pojo层
Student类
package com.cqust.pojo;
public class Student
private int id; //学生id
private String sname; //学生姓名
private String sno; //学生学号
private String smajor; //学生专业
public int getId()
return id;
public void setId(int id)
this.id = id;
public String getSname()
return sname;
public void setSname(String sname)
this.sname = sname;
public String getSno()
return sno;
public void setSno(String sno)
this.sno = sno;
public String getSmajor()
return smajor;
public void setSmajor(String smajor)
this.smajor = smajor;
@Override
public String toString()
return "Student" +
"学生id=" + id +
", 学生姓名='" + sname + '\\'' +
", 学号='" + sno + '\\'' +
", 专业='" + smajor + '\\'' +
'';
utils层
MyBatisUtils类
package com.cqust.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.Reader;
/**
* 工具类
*/
public class MyBatisUtils
private static SqlSessionFactory sqlSessionFactory = null;
//初始化SQLSessionFactory对象
static
try
//使用MyBatis提供的Resource类加载MyBatis的配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//构建SQLSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
catch (Exception e)
e.printStackTrace();
//获取SqlSession对象的方法
public static SqlSession getSession()
//若传入true表示关闭事务控制,自动提交;false表示开启事务控制
return sqlSessionFactory.openSession(true);
测试层
Test1(测试类)
import com.cqust.pojo.Student;
import com.cqust.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class Test1
@Test
public void findStudentBySnameAndSmajor()
//获取SqlSession
SqlSession session = MyBatisUtils.getSession();
//创建Student对象,并向对象中添加数据
Student student = new Student();
student.setSname("Hades"); //设置学生姓名
student.setSmajor("计算机科学与技术"); //设置学生专业
//执行SqlSession的查询方法,返回结果集
List<Student> students = session.selectList("findStudentBySnameAndSmajor",student);
//输出查询结果信息
for(Student Student1 : students)
//输出结果信息
System.out.println(Student1);
//关闭SqlSession
session.close();
@Test
public void findStudentByListTest()
//获取SqlSession
SqlSession session = MyBatisUtils.getSession();
//创建List集合,封装查询id
List<Integer> list = new ArrayList<>();
//遍历id<5
for (int i = 0; i < 5; i++)
list.add(i);
//执行SqlSession的查询方法,返回结果集
List<Student> students = session.selectList("findStudentById",list);
//输出查询结果信息
for(Student Student1 : students)
//输出结果信息
System.out.println(Student1);
//关闭SqlSession
session.close();
实验小结
本实验主要对动态SQL的相关知识进行了大体的应用。包括动态SQL中的元素,条件查询操作,包括< choose>元素、< when>元素、< otherwise>元素和< where>元素的使用。通过本实验,可以初步掌握常用动态SQL元素的主要作用。
谢谢浏览!
以上是关于MyBatis——学生信息查询系统的主要内容,如果未能解决你的问题,请参考以下文章
基于jsp+mysql+mybatis+Spring boot简单学生成绩信息管理系统
基于Spring MVC + Spring + MyBatis的学生信息管理系统
基于jsp+mysql+mybatis+Spring boot简单学生成绩信息管理系统