笔记学习,记录步骤7与步骤8中出现的错误
目录
【10 分】步骤 3:完成 Info 的 toString 方法
【10 分】步骤 5:完成 SSDaoImpl 的 queryInfo 方法
【5 分】步骤 1:项目准备
复制粘贴即可
【10 分】步骤 2:完成实体类 Info
//补充完成该类的含参构造方法
public Info(String id, String name, int age, String sex, String provice) {
}
需求:补充有参构造函数
//补充完成该类的含参构造方法
public Info(String id, String name, int age, String sex, String provice) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.provice = provice;
}
【10 分】步骤 3:完成 Info
的 toString
方法
// 请修改该方法,以保证打印对象时输出格式如下:
// {id:"001";name:"zs";age:20;sex:"男";provice:"四川"}
@Override
public String toString() {
return "";
}
答案
public String toString() {
return "{id:\""+id+"\";name:\""+name+"\";age:"+age+";sex:\""+sex+"\";provice:\""+provice+"\"}";
}
【10 分】步骤 4:完成 Score
// 缺失代码:请补全以下方法,要求英语成绩的范围在:0<=num<150 之间
// 当参数在规定范围外时,不做任何动作
public void setEnglish(int english) {
}
答案
public void setEnglish(int english) {
if(english >= 0 && english < 150){
this.english = english;
}
}
【10 分】步骤 5:完成 SSDaoImpl
的 queryInfo
方法
/**
* 依据学生考号查询学生信息
* @param id 学生考号
* @return 有的话返回学生对象,没有的话返回null
*/
public Info queryInfo(String id){
// 请补全sql语句
String sql = "###";
Info i = infoUtil.getOne(sql, Info.class, id);
return i;
}
答案
public Info queryInfo(String id){
// 请补全sql语句
String sql = "select * from info where id=?";
Info i = infoUtil.getOne(sql, Info.class, id);
return i;
}
【10 分】步骤 6:继续完善 SSDaoImpl
类
/**
* 依据学生考号查询学生成绩,返回4门成绩之和
* @param id 学生考号
* @return 返回4门成绩之和
*/
public int querySum(String id){
// 请补全sql语句
String sql = "###";
Score s = infoUtil.getOne(sql, Score.class, id);
int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
return sum;
}
答案
public int querySum(String id){
// 请补全sql语句
String sql = "select * from score where id = ?";
Score s = scoreUtil.getOne(sql, Score.class, id);
int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
return sum;
}
【15 分】步骤 7:继续完善 SBDaoImpl
类
/**
* 依据学生姓名查询学生成绩,返回4门成绩之和
* @param name 学生姓名
* @return 返回4门成绩之和
*/
public int querySumByName(String name){
// 请补全sql语句
String sql = "###";
Score s = scoreUtil.getOne(sql, Score.class, name);
int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
return sum;
}
这里是通过info表的name获取到id,然后通过id去查找到四门的成绩
答案
String sql_in = "select * from info where name = ?";
Info in = infoUtil.getOne(sql_in, Info.class, name);
String sql_sc = "select * from score where id="+in.getId();
Score sc = scoreUtil.getOne(sql_sc, Score.class);
int sum = sc.getChinese() + sc.getMaths() + sc.getEnglish() + sc.getComposite();
return sum;
这个代码在实验13是可以通过的,但是不够完整,如果说找不到人或者找到人没成绩,那就要判断是不是null
// 请补全sql语句
String sql_in = "select * from info where name = ?";
Info in = infoUtil.getOne(sql_in, Info.class, name);
if (in != null){
String sql_sc = "select * from score where id="+in.getId();
Score sc = scoreUtil.getOne(sql_sc, Score.class);
if(sc != null){
int sum = sc.getChinese() + sc.getMaths() + sc.getEnglish() + sc.getComposite();
return sum;
}
}
return 0;
(这里是用了分布查询,当然还可以通过子查询查询到数据)
============子查询================
public int querySumByName(String name){
// 请补全sql语句
String sql = "select * from score where id = (select id from info where name = ?)";
Score s = scoreUtil.getOne(sql, Score.class, name);
int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
return sum;
}
【15 分】步骤 8:继续完善 SSDaoImpl
类
/**
* 查询4门成绩之和的最大值
* @return 返回最大值
*/
public int queryMaxSum(){
// 请补全sql语句
String sql = "###";
Score s = scoreUtil.getOne(sql, Score.class);
int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
return sum;
}
这里查询的四门成绩最大值,是查询几个学生里面的总分最高的
答案
// 请补全sql语句
String sql = "select * from score order by chinese DESC,maths DESC,English DESC,Composite DESC limit 1";
Score s = scoreUtil.getOne(sql, Score.class);
int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
return sum;
这个是可以通过的,但是存在bug(因为这个题目给出的成绩数据里面,这样排序刚好获取到了总分数最高的,如果不是,就出现了错误),所以对总成绩做一个排序
总分排序答案
// // 请补全sql语句
String sql = "select * from score order by chinese+maths+english+composite desc limit 1";
Score s = scoreUtil.getOne(sql, Score.class);
int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
return sum;
【15 分】步骤 9:继续完善 SSDaoImpl
类
/**
* 依据姓名更新年龄
* @return name 姓名
* @return age 年龄
*/
public void updateAge(String name,int age){
// 请补全sql语句
String sql = "###";
int i = infoUtil.update(sql,age,name);
}
答案
public void updateAge(String name,int age){
// 请补全sql语句
String sql = "update info set age = ? where name = ?";
int i = infoUtil.update(sql,age,name);
}