MyBatis——学生信息查询系统

Posted 基础较差的cs菜鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis——学生信息查询系统相关的知识,希望对你有一定的参考价值。

MyBatis——学生信息查询系统

实验要求
本实验要求根据表1在数据库中创建一个t_student表,并利用动态SQL进行条件查询、更新和复杂查询操作的相关知识完成一个学生信息查询系统。

实验内容

表1 学生表(t_student)
学生编号(id)学生姓名(sname)学生学号(sno)学生专业(smajor)
1张三001电气工程及自动化
2李四002自动化
3王五003测控
4悟空999降妖除魔
5Hades985计算机科学与技术

该学生信息查询系统需要实现以下几个功能:

  1. 多条件查询。
  • 当用户输入的学生姓名不为空时,则只根据学生姓名进行学生信息的查询。
  • 当用户输入的学生姓名为空而学生专业不为空时,则只根据学生专业进行学生信息的查询。
  • 当用户输入的学生姓名和学生专业都为空时,则要求查询出所有学号不为空的学生信息。
  1. 单条件查询出所有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简单学生成绩信息管理系统

基于jsp+mysql+mybatis+Spring boot简单学生成绩信息管理系统

Mybatis(关联查询)

使用mybatis框架完成学生信息的增删改查操作的完整代码书写-代码拿走即用-看完秒懂哦