mybatis小练习

1.按成绩从高到低排序查询成绩在80——90(闭区间)之间的学员姓名
步骤: 先在选课的dao接口中增加一个方法,用来查询80-90区间内的所有选课信息,然后从选课信息中提取出所有学号,在学生的dao中写一个根据学号(根据单个学号查询即可)查询学生信息的方法,把上面提取出的所有学号,都调用一下这个方法,然后输出每个学生的姓名

2.查询选课学分在3以上的年龄最小的两个学员的姓名
3.查询每门课的平均分
4.查询数学成绩高于王敏的数学成绩的学员信息
5.查询课程学分在3以上,成绩及格的男同学姓名

Course类

package mybatis;

public class Course {
    private int cno;
    private String cname;
    private int cpno;
    private int ccredit;



    public int getCno() {
        return cno;
    }

    public void setCno(int cno) {
        this.cno = cno;
    }

    public String getCname() {
        return cname;
    }

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

    public int getCpno() {
        return cpno;
    }

    public void setCpno(int cpno) {
        this.cpno = cpno;
    }

    public int getCcredit() {
        return ccredit;
    }

    public void setCcredit(int ccredit) {
        this.ccredit = ccredit;
    }
}

CourseDao

package mybatis;

import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface CourseDao {
    @Select("select * from course where ccredit >3")
        List<Course> selectByCredit();
}

Sc类

package mybatis;

public class Sc {
    private int sno;
    private int cno;
    private int grade;



    public int getSno() {
        return sno;
    }

    public void setSno(int sno) {
        this.sno = sno;
    }

    public int getCno() {
        return cno;
    }

    public void setCno(int cno) {
        this.cno = cno;
    }

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }
}
ScDao 


package mybatis;

import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

public interface ScDao {
    @Select("select * from sc where grade between 80 and 90 order by grade desc")
    List<Sc> selectByGrade();

    @Select("select * from sc where cno = #{cno}")
    List<Sc> selectByCno(int cno);

    @Select("select cno,avg(grade) a from sc group by cno")
    List<Map<String,Integer>> selectAvg();
}

Student类

package mybatis;

public class Student {
    private int sno;
    private String sname;
    private String ssex;
    private int sage;
    private String sdept;



    public int getSno() {
        return sno;
    }

    public void setSno(int sno) {
        this.sno = sno;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getSsex() {
        return ssex;
    }

    public void setSsex(String ssex) {
        this.ssex = ssex;
    }

    public int getSage() {
        return sage;
    }

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

    public String getSdept() {
        return sdept;
    }

    public void setSdept(String sdept) {
        this.sdept = sdept;
    }
}

StudentDao

package mybatis;

import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface StudentDao {
    @Select("select * from student where sno=#{sno}")
    Student selectBySno(int sno);


    List<Student> selectAll();

    @Select("select * from sc where grade=#{grade}")
    List<Sc> selectByGrade(int grade);


}

测试一
package mybatis;

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.InputStream;
import java.util.List;

public class Test1 {
    public static void main(String[] args) throws Exception{
        String config = "mybatis-config.xml";
        //使用io流读取配置文件
        InputStream in = Resources.getResourceAsStream(config);
        //通过配置文件的内容,构建连接工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //从工厂中获取一个数据库连接
        SqlSession session = factory.openSession();
        //通过连接执行sql语句
        StudentDao studentDao = session.getMapper(StudentDao.class);
        ScDao scDao = session.getMapper(ScDao.class);
        List<Sc> list = scDao.selectByGrade();
        for (Sc s : list) {
            Student st = studentDao.selectBySno(s.getSno());
            System.out.println(st.getSname());
        }
    }
}

测试二

package mybatis;

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.InputStream;
import java.util.*;

public class Test2 {

    public static void main(String[] args) throws Exception {
        String config = "mybatis-config.xml";
        InputStream in = Resources.getResourceAsStream(config);
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        SqlSession session = factory.openSession();

        StudentDao studentDao = session.getMapper(StudentDao.class);
        ScDao scDao = session.getMapper(ScDao.class);
        CourseDao courseDao = session.getMapper(CourseDao.class);

        List<Course> courses = courseDao.selectByCredit();

        Set<Integer> set = new HashSet<Integer>();
        List<Student> list = new ArrayList<Student>();
        for(Course c : courses){
            List<Sc> scList = scDao.selectByCno(c.getCno());
            for(Sc s : scList){
                //如果集合中不存在当前学号,则查询这个学生的信息
                if(!set.contains(s.getSno())) {
                    Student st = studentDao.selectBySno(s.getSno());
                    list.add(st);
                    set.add(s.getSno());
                }
            }
        }

        Comparator<Student> com = new Comparator<Student>() {
            public int compare(Student o1, Student o2) {
                return o1.getSage()-o2.getSage();
            }
        };

        Collections.sort(list, com);

        System.out.println(list.get(0).getSname());
        System.out.println(list.get(1).getSname());

    }
}

测试三

package mybatis;

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.InputStream;
import java.util.List;
import java.util.Map;

public class Test3 {
    public static void main(String[] args)  throws Exception{
        String config = "mybatis-config.xml";
        InputStream in = Resources.getResourceAsStream(config);
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        SqlSession session = factory.openSession();

        ScDao scDao = session.getMapper(ScDao.class);
        List<Map<String, Integer>> map = scDao.selectAvg();
        for (Map<String, Integer> m : map) {
            System.out.println(m.get("cno") + "\t " + m.get("a"));
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值