封装与职责分离的开发思维
1:封装:参数过多应该封装成一个对象 2:职责分离:谁拥有该数据,谁就应该包含操作该数据的方法
■ 举例:没有封装【多个查询条件作为参数 (String name, Integer minAge, Integer maxAge, Integer dormBuildId) 】
@Override
public List<Teacher> query(String name, Integer minAge, Integer maxAge, Integer dormBuildId) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM t_teacher WHERE 1=1");
//封装占位符参数
List<Object> parameters = new ArrayList<>();
//拼接sql和设置占位符参数值
//姓名
if (StringUtils.isNotBlank(name)) {
sql.append(" AND name LIKE ?");
parameters.add("%" + name + "%");
}
//最小年龄
if(minAge != null) {
sql.append(" AND age >= ?");
parameters.add(minAge);
}
//最大年龄
if(maxAge != null) {
sql.append(" AND age <= ?");
parameters.add(maxAge);
}
System.out.println("sql=" + sql);
System.out.println("parameters=" + parameters);
return JdbcTemplate.query(sql.toString(), new BeanListHandler<>(Teacher.class), parameters.toArray());
}