想和大家分享一下现在喜悦的心情,因为解决了一个比较刁钻的问题,很开心。
今天在写代码的时候,要实现一个功能:多层筛选。条件是这样的:我们可以分别通过学生学号、学生姓名以及班级名称,来输出查找到的学生列表,也可以依靠其中的两个条件来查找(此时另外一个条件值为null),当然也能够使用三个条件来查找。
第一个思路就是,分别判断这三个条件是否为空,然后分别调用三个已有的SQL方法。
/**
* 查询指定id的学生信息
* @param id 学生id
* @return 学生实体
*/
Student queryById(Integer id);
/**
* 查询某班所有学生
* @param class_id 班级id
* @return 学生实体列表
*/
List<Student> queryByClassId(Integer class_id);
/**
* 通过名字查询学生(可能不止一个)
* @param name 学生姓名
* @return 学生实体列表
*/
List<Student> queryByName(String name);
这个思路很快就被我否决了,原因就是太麻烦,判断太多,最后还得整理结果,绝对的大麻烦。
第二个思路,辛苦一点,写的SQL方法多一些,例如按照学生姓名和学生学号联合查询;学生姓名和班级联合查询等,但是我转头又想了想,也否决了,因为也很麻烦——目前而言是三个条