(0基础保姆教程)-JavaEE开课啦!--10课程(MyBatis的注解开发)-实验8

一、MyBatis有哪些注解?

1. @Select:用于执行查询操作,可以指定 SQL 语句。
2. @SelectKey:用于在插入操作后获取数据库自动生成的键值
3. @Insert:用于执行插入操作,可以指定 SQL 语句。
4. @Update:用于执行更新操作,可以指定 SQL 语句。
5. @Delete:用于执行删除操作,可以指定 SQL 语句。
6. @Results:用于定义结果集的映射规则。
7. @Result:用于定义单个字段的映射规则,通常用在 @Results 注解中。
8. @One:用于一对一的关联查询。
9. @Many:用于一对多的关联查询。
10. @Param:用于指定方法参数的名称,方便在 SQL 语句中引用。
11. @Options:用于设置查询的一些额外选项,如分页查询的参数。
12. @CacheNamespace:用于声明一个缓存空间,可以对查询结果进行缓存。
13. @CacheNamespaceRef:用于引用其他 Mapper 中定义的缓存空间。

二、MyBatis注解案例

Example:

        有学生表t_student及班级表t_class,其中班级表和学生表之间是一对多的关联关系,请使用注解完成以下要求:
        1.建立数据库class8_ssm及表t_studentt_class
        2.利用注解实现班级和学生信息的增删改查操作        
        3.利用注解实现一对多的查询。查询某个班的所有学生的信息

三、案例分析

1.学生功能实现:

        增加学生信息、删除学生信息、修改学生信息、查询学生信息

2.班级功能实现:

        增加班级信息、删除班级信息、修改班级信息、查询班级信息、查询班级下学生

3.对象关系图

四、案例实现

        B.项目文件结构

               

1.创建数据库及对应数据表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_class
-- ----------------------------
DROP TABLE IF EXISTS `t_class`;
CREATE TABLE `t_class`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `cname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
  `cteacher` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
  `ctel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for t_student
-- ----------------------------
DROP TABLE IF EXISTS `t_student`;
CREATE TABLE `t_student`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `sname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
  `sage` int NOT NULL,
  `sgender` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
  `classid` int NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `classid`(`classid` ASC) USING BTREE,
  CONSTRAINT `classid` FOREIGN KEY (`classid`) REFERENCES `t_class` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

2.创建Spring项目,在pom文件引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ljl</groupId>
    <artifactId>class8_ssm</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.1.13</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.32</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.11</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>

3.创建数据库连接配置文件及MyBatis配置文件

        1.db.properties

mysql.driver=com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/class8_ssm?serverTimezone=UTC&\characterEncoding=utf-8&useUnicode=true&useSSl=false
mysql.username=root
mysql.password=pjl2003

        2.mybatis-config.xml

<?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"/>
<!--    设置实体别名-->
    <typeAliases>
        <package name="com.ljl.Entity"/>
    </typeAliases>
    <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
            <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${mysql.driver}" />
                <property name="url" value="${mysql.url}" />
<!--                //数据库账号-->
                <property name="username" value="${mysql.username}" />
<!--                //数据库密码-->
                <property name="password" value="${mysql.password}" />
            </dataSource>
        </environment>
    </environments>
    <!--声明类对应的sql操作文件-->
    <mappers>
        <mapper class="com.ljl.Mapper.ClassMapper"/>
        <mapper class="com.ljl.Mapper.StudentMapper"/>
    </mappers>
</configuration>

4.创建Entity软件包,在包中创建对象实体类

        1.ClassE

package com.ljl.Entity;

import java.util.List;

public class ClassE {
    private int id;
    private String cname;
    private String cteacher;
    private String ctel;

    private List<Student> student;

    public ClassE() {
    }

    public ClassE(int id, String cname, String cteacher, String ctel, List<Student> student) {
        this.id = id;
        this.cname = cname;
        this.cteacher = cteacher;
        this.ctel = ctel;
        this.student = student;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getCname() {
        return cname;
    }

    public void setCname(String cname) {
        this.cname = cname;
    }

    public String getCteacher() {
        return cteacher;
    }

    public void setCteacher(String cteacher) {
        this.cteacher = cteacher;
    }

    public String getCtel() {
        return ctel;
    }

    public void setCtel(String ctel) {
        this.ctel = ctel;
    }

    public List<Student> getStudent() {
        return student;
    }

    public void setStudent(List<Student> student) {
        this.student = student;
    }

    @Override
    public String toString() {
        return "Class{" +
                "id=" + id +
                ", cname='" + cname + '\'' +
                ", cteacher='" + cteacher + '\'' +
                ", ctel='" + ctel + '\'' +
                ", student=" + student +
                '}';
    }
}

        2.Student

package com.ljl.Entity;

public class Student {

    private int id;
    private String sname;
    private int sage;
    private String sgender;
    private int classid;


    public Student() {
    }

    public Student(int id, String sname, int sage, String sgender, int classid) {
        this.id = id;
        this.sname = sname;
        this.sage = sage;
        this.sgender = sgender;
        this.classid = classid;
    }

    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 int getSage() {
        return sage;
    }

    public void setSage(int sage) {
        this.sage = sage;
    }

    public String getSgender() {
        return sgender;
    }

    public void setSgender(String sgender) {
        this.sgender = sgender;
    }

    public int getClassid() {
        return classid;
    }

    public void setClassid(int classid) {
        this.classid = classid;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", sname='" + sname + '\'' +
                ", sage=" + sage +
                ", sgender='" + sgender + '\'' +
                ", classid=" + classid +
                '}';
    }
}

5.创建Mapper软件包,在包中创建数据操作方法

        1.ClassMapper

package com.ljl.Mapper;

import com.ljl.Entity.ClassE;
import com.ljl.Entity.Student;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface ClassMapper {

    //TODO 增加班级信息
    @Insert("INSERT INTO t_class (cname, cteacher, ctel) values (#{cname}, #{cteacher}, #{ctel})")
    int insertClass(ClassE c);

    //TODO 删除班级信息-根据-id-删除
    @Delete("DELETE FROM t_class WHERE id = #{id}")
    int deleteClass(int id);

    //TODO 修改班级信息-根据-班级名称-修改
    @Update("UPDATE t_class SET cteacher = #{cteacher}, ctel = #{ctel} WHERE cname = #{cname}")
    int updateClass(ClassE c);

    //TODO 查询班级信息-根据班级名称查询
    @Select("SELECT * FROM t_class WHERE cname = #{cname}")
    ClassE getClassByCname(String cname);

    @Select("SELECT * FROM t_class")
    List<ClassE> getAllClassE();


    //TODO 查询班级下所有学生的信息
    @Select("SELECT * FROM t_class  WHERE id = #{id}")
    @Results({@Result(id = true, column = "id", property = "id"),
            @Result(column = "cname", property = "cname"),
            @Result(column = "cteacher", property = "cteacher"),
            @Result(column = "ctel", property = "ctel"),
            @Result(column = "id", property = "student", many = @Many(select = "com.ljl.Mapper.StudentMapper.selectStudentByClassid"))})
    ClassE selectClassAndStudentById(int id);


}

        2.StudentMapper

package com.ljl.Mapper;

import com.ljl.Entity.ClassE;
import com.ljl.Entity.Student;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface StudentMapper {

    //TODO 增加学生信息
    @Insert("INSERT INTO t_student(sname, sage, sgender, classid) values (#{sname}, #{sage}, #{sgender}, #{classid})")
    int insertStudent(Student student);


    //TODO 删除学生信息-根据-学生名称-删除
    @Delete("DELETE FROM t_student WHERE sname = #{sname}")
    int deleteStudent(String sname);

    //TODO 修改学生信息-根据-学生名称-修改
    @Update("UPDATE t_student SET sage = #{sage}, sgender = #{sgender}, classid = #{classid} WHERE sname = #{sname}")
    int updateStudent(Student student);

    //TODO 查询学生信息-根据学生名称查询
    @Select("SELECT * FROM t_student WHERE sname = #{sname}")
    Student getStudentBySname(String sname);

    @Select("SELECT * FROM t_student")
    List<Student> getAllStudent();


    //TODO 查询班级下所有学生的信息
    @Select("SELECT * FROM t_student WHERE classid = #{classid}")
    @Results({@Result(id = true,column = "id", property = "id" ),
            @Result(column = "sname", property = "sname"),
            @Result(column = "sage", property = "sage"),
            @Result(column = "sgender", property = "sgender"),
            @Result(column = "classid", property = "classid"),})
    List<Student> selectStudentByClassid(int classid);
}

6.创建Dao软件包,创建方法实现接口及具体实现类

        1.学生层面StudentDao及StudentDaoImpl

package com.ljl.Dao;

import com.ljl.Entity.ClassE;
import com.ljl.Entity.Student;

import java.util.List;

public interface StudentDao {

    public int insertStudent(Student student);

    public int deleteStudent(String sname);

    public int updateStudent(Student student);

    public List<Student> getAllStudent();

    public Student getStudentBySname(String sname);

}
package com.ljl.Dao.Impl;

import com.ljl.Dao.StudentDao;
import com.ljl.Entity.ClassE;
import com.ljl.Entity.Student;
import com.ljl.Mapper.ClassMapper;
import com.ljl.Mapper.StudentMapper;
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 org.springframework.stereotype.Component;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

@Component
public class StudentDaoImpl implements StudentDao {

    SqlSessionFactory ssf = null;

    @Override
    public int insertStudent(Student student) {
        try {
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSession sqlSession = ssf.openSession();
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
        int result_code = studentMapper.insertStudent(student);
        sqlSession.commit();
        return result_code;
    }

    @Override
    public int deleteStudent(String sname) {
        try {
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSession sqlSession = ssf.openSession();
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
        int result_code = studentMapper.deleteStudent(sname);
        sqlSession.commit();
        return result_code;
    }

    @Override
    public int updateStudent(Student student) {
        try {
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSession sqlSession = ssf.openSession();
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
        int result_code = studentMapper.updateStudent(student);
        sqlSession.commit();
        return result_code;
    }

    @Override
    public List<Student> getAllStudent() {
        try {
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSession sqlSession = ssf.openSession();
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
        List<Student> students = studentMapper.getAllStudent();
        return students;
    }

    @Override
    public Student getStudentBySname(String sname) {
        try {
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSession sqlSession = ssf.openSession();
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
        Student student = studentMapper.getStudentBySname(sname);
        return student;
    }
}

        2.班级层面ClassDao及ClassDaoImpl

package com.ljl.Dao;

import com.ljl.Entity.ClassE;

import java.util.List;

public interface ClassDao {
    public int insertClass(ClassE c);
    public int deleteClass(int id);
    public int updateClass(ClassE c);
    public ClassE getClassByCname(String cname);
    public List<ClassE> getAllClassE();
    public ClassE selectClassAndStudentById(int id);
}
package com.ljl.Dao.Impl;

import com.ljl.Dao.ClassDao;
import com.ljl.Entity.ClassE;
import com.ljl.Mapper.ClassMapper;
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 org.springframework.stereotype.Component;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

@Component
public class ClassDaoImpl implements ClassDao {

    SqlSessionFactory ssf = null;

    @Override
    public int insertClass(ClassE c) {

        try {
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSession sqlSession = ssf.openSession();
        ClassMapper classMapper = sqlSession.getMapper(ClassMapper.class);
        int result_code = classMapper.insertClass(c);
        sqlSession.commit();
        return result_code;
    }

    @Override
    public int deleteClass(int id) {
        try {
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSession sqlSession = ssf.openSession();
        ClassMapper classMapper = sqlSession.getMapper(ClassMapper.class);
        int result_code = classMapper.deleteClass(id);
        sqlSession.commit();
        return result_code;
    }

    @Override
    public int updateClass(ClassE c) {
        try {
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSession sqlSession = ssf.openSession();
        ClassMapper classMapper = sqlSession.getMapper(ClassMapper.class);
        int result_code = classMapper.updateClass(c);
        sqlSession.commit();
        return result_code;
    }

    @Override
    public ClassE getClassByCname(String cname) {
        try {
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSession sqlSession = ssf.openSession();
        ClassMapper classMapper = sqlSession.getMapper(ClassMapper.class);
        ClassE c = classMapper.getClassByCname(cname);
        return c;
    }

    @Override
    public List<ClassE> getAllClassE() {
        try {
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSession sqlSession = ssf.openSession();
        ClassMapper classMapper = sqlSession.getMapper(ClassMapper.class);
        List<ClassE> classES = classMapper.getAllClassE();
        return classES;
    }

    @Override
    public ClassE selectClassAndStudentById(int id) {
        try {
            InputStream input = Resources.getResourceAsStream("mybatis-config.xml");
            ssf = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSession sqlSession = ssf.openSession();
        ClassMapper classMapper = sqlSession.getMapper(ClassMapper.class);
        ClassE c = classMapper.selectClassAndStudentById(id);
        return c;
    }
}

7.在Main文件中编辑业务逻辑

package com.ljl;

import com.ljl.Dao.ClassDao;
import com.ljl.Dao.Impl.ClassDaoImpl;
import com.ljl.Dao.Impl.StudentDaoImpl;
import com.ljl.Dao.StudentDao;
import com.ljl.Entity.ClassE;
import com.ljl.Entity.Student;

import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("欢迎使用岚精灵班级管理系统!");
        ClassDao classDao = new ClassDaoImpl();
        StudentDao studentDao = new StudentDaoImpl();
        boolean status = true;
        while (status) {
            System.out.println("\n\n1.学生操作\n2.班级操作\n3.退出系统");
            Scanner scanner = new Scanner(System.in);
            System.out.println("请选择操作:");
            int choice1 = scanner.nextInt();
            if (choice1 == 1) {
                System.out.println("\n\n1.添加学生\n2.删除学生\n3.修改学生\n4.查询学生\n5.返回");
                int choice2 = scanner.nextInt();
                if (choice2 == 1) {
                    Student student = new Student();
                    System.out.println("学生姓名:");
                    String sname = scanner.next();
                    student.setSname(sname);
                    System.out.println("学生年龄:");
                    int sage = scanner.nextInt();
                    student.setSage(sage);
                    System.out.println("学生性别:");
                    String sgender = scanner.next();
                    student.setSgender(sgender);
                    System.out.println("学生班级id:");
                    int classid = scanner.nextInt();
                    student.setClassid(classid);
                    int result = studentDao.insertStudent(student);
                    if (result == 1) {
                        System.out.println("添加成功!");
                    }else {
                        System.out.println("添加失败!");
                    }
                }else if (choice2 == 2) {
                    System.out.println("请输入需要删除学生名称:");
                    String sname = scanner.next();
                    int result_code = studentDao.deleteStudent(sname);
                    if (result_code == 1) {
                        System.out.println("删除成功!");
                    }else {
                        System.out.println("删除失败!");
                    }
                }else if (choice2 == 3) {
                    Student student = new Student();
                    System.out.println("需要修改信息的学生姓名:");
                    String sname = scanner.next();
                    student.setSname(sname);
                    System.out.println("学生年龄:");
                    int sage = scanner.nextInt();
                    student.setSage(sage);
                    System.out.println("学生性别:");
                    String sgender = scanner.next();
                    student.setSgender(sgender);
                    System.out.println("学生班级id:");
                    int classid = scanner.nextInt();
                    student.setClassid(classid);
                    int result = studentDao.updateStudent(student);
                    if (result == 1) {
                        System.out.println("修改成功!");
                    }else {
                        System.out.println("修改失败!");
                    }
                }else if (choice2 == 4) {
                    System.out.println("请输入需要查询的学生名称:");
                    String sname = scanner.next();
                    Student student = studentDao.getStudentBySname(sname);
                    System.out.println("id:" + student.getId());
                    System.out.println("姓名:" + student.getSname());
                    System.out.println("年龄:" + student.getSage());
                    System.out.println("性别:" + student.getSgender());
                    System.out.println("班级id:" + student.getClassid());
                }
            }else if (choice1 == 2) {
                System.out.println("\n\n1.添加班级\n2.删除班级\n3.修改班级\n4.查询班级信息\n5.查询所有班级信息\n6.查询班级学生名单\n7.返回");
                int choice2 = scanner.nextInt();
                if (choice2 == 1) {
                    ClassE classE = new ClassE();
                    System.out.println("请输入班级名称:");
                    String cname = scanner.next();
                    classE.setCname(cname);
                    System.out.println("请输入辅导员名称:");
                    String cteacher = scanner.next();
                    classE.setCteacher(cteacher);
                    System.out.println("请输入辅导员电话:");
                    String ctel = scanner.next();
                    classE.setCtel(ctel);
                    int result_code = classDao.insertClass(classE);
                    if (result_code == 1) {
                        System.out.println("添加成功!");
                    }else {
                        System.out.println("添加失败!");
                    }
                }else if (choice2 == 2) {
                    System.out.println("请输入需要删除的id:");
                    int id = scanner.nextInt();
                    int result_code = classDao.deleteClass(id);
                    if (result_code == 1) {
                        System.out.println("删除成功!");
                    }else {
                        System.out.println("删除失败!");
                    }
                }else if (choice2 == 3) {
                    ClassE classE = new ClassE();
                    System.out.println("请输入需要修改的班级名称:");
                    String cname = scanner.next();
                    classE.setCname(cname);
                    System.out.println("请输入辅导员名称:");
                    String cteacher = scanner.next();
                    classE.setCteacher(cteacher);
                    System.out.println("请输入辅导员电话:");
                    String ctel = scanner.next();
                    classE.setCtel(ctel);
                    int result_code = classDao.updateClass(classE);
                    if (result_code == 1) {
                        System.out.println("修改成功!");
                    }else {
                        System.out.println("修改失败!");
                    }
                }else if (choice2 == 4) {
                    System.out.println("请输入需要查询的班级名称:");
                    String cname = scanner.next();
                    ClassE classE = classDao.getClassByCname(cname);
                    System.out.println("id:" + classE.getId());
                    System.out.println("班级名称:" + classE.getCname());
                    System.out.println("辅导员:" + classE.getCteacher());
                    System.out.println("电话:" + classE.getCtel());
                }else if (choice2 == 5) {
                    List<ClassE> classE = classDao.getAllClassE();
                    for (ClassE classE1 : classE) {
                        System.out.println("===================================");
                        System.out.println("id:" + classE1.getId());
                        System.out.println("班级名称:" + classE1.getCname());
                        System.out.println("辅导员:" + classE1.getCteacher());
                        System.out.println("电话:" + classE1.getCtel());
                        System.out.println("===================================");
                    }
                }else if (choice2 == 6) {
                    System.out.println("请输入需要查询的班级id:");
                    int id = scanner.nextInt();
                    ClassE classE = classDao.selectClassAndStudentById(id);
                    System.out.println("id:" + classE.getId());
                    System.out.println("班级名称:" + classE.getCname());
                    System.out.println("辅导员:" + classE.getCteacher());
                    System.out.println("电话:" + classE.getCtel());
                    List<Student> studentList = classE.getStudent();
                    System.out.println("===================================");
                    for (Student student1 : studentList) {
                        System.out.println("||  id:" + student1.getId());
                        System.out.println("||  姓名:" + student1.getSname());
                        System.out.println("||  性别:" + student1.getSgender());
                        System.out.println("||  年龄:" + student1.getSage());
                        System.out.println("===================================");
                    }
                }
            }else if (choice1 == 3) {
                status = false;
                System.out.println("\n欢迎下次使用!");
            }
        }
    }
}

五、代码测试

1.学生操作

        1.增加学生

        2.删除学生

        3.修改学生

        4.查询学生

2.班级操作

        1.增加班级

        2.删除班级

        3.修改班级

        4.查询一个班级

        5.查询所有班级

        6.查询班级下学生列表

恭喜你!学会了如何使用MyBatis的注解开发!

中期在即,加油卷吧~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岚精灵玩电脑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值