一、包结构(需要导的库)
?
二、entity
package org.e276.entity; import java.sql.Date; /** * 员工实体类 * @author miao * */ public class Employee { private int id; private String name; private boolean sex; private Date birthday; private double salary; private int departId; public Employee() { super(); } public Employee(int id, String name, boolean sex, Date birthday, double salary, int departId) { super(); this.id = id; this.name = name; this.sex = sex; this.birthday = birthday; this.salary = salary; this.departId = departId; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isSex() { return sex; } public void setSex(boolean sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public int getDepartId() { return departId; } public void setDepartId(int departId) { this.departId = departId; } @Override public String toString() { return "Employee [id=" + id + ", name=" + name + ", sex=" + sex + ", birthday=" + birthday + ", salary=" + salary + ", departId=" + departId + "]"; } }
?
三、dao接口
package org.e276.dao; import java.util.List; import java.util.Map; import org.e276.entity.Employee; /** * 实现所有的接口 */ public interface EmployeeDao { // 查询所有的用户,使用RowMapper可映射多行数据 public List<Employee> getAllEmployees(); // 查询薪水在3000-5000之间的有条件查询,用RowCallbackHandler,也可以用RowMapper public List<Employee> getEmployeesBetweenSalary(double low, double up); // 女或男职员有多少个,单值数据查询 public int getEmployeeCountBySex(boolean sex); // 一次插入多名职员 public int[] saveEmployees(final Employee[] employees); // 删除员工 public int deleteEmployee(int id); // 修改 e必须是final类型 public int updateEmployee(final Employee e); // 根据ID得到职员,查询单值对象 public Employee getEmployeeById(int id); // 查询工资小于money的员工 public List<Employee> getEmployeeLessSalary(double money); // 多表链接查询,封装成Map public List<Map<String, Object>> findEmployeeInfo(); }
?
四、daoImpl实现类
package org.e276.dao.impl; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.e276.dao.EmployeeDao; import org.e276.entity.Employee; import org.e276.mapper.EmployeeMapper; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport; /** * 实现类 * @author miao * */ public class EmployeeDaoImpl extends NamedParameterJdbcDaoSupport implements EmployeeDao { /** * 查询所有的用户,使用RowMapper可映射多行数据 */ public List<Employee> getAllEmployees() { return super.getJdbcTemplate().query( "select id, name, sex, salary, birthday, depart_id from employee", new EmployeeMapper()); } /** * 查询薪水在3000-5000之间的有条件查询,用RowCallbackHandler,也可以用RowMapper */ public List<Employee> getEmployeesBetweenSalary(double low, double up) { return super .getJdbcTemplate() .query("select id, name, sex, salary, birthday, depart_id from employee where salary between ? and ?", new EmployeeMapper(), low, up); } /** * 女或男职员有多少个 */ public int getEmployeeCountBySex(boolean sex) { return super.getJdbcTemplate() .queryForInt("select count(*) from employee where sex=?", sex); } /** * 一次插入多名职员 */ public int[] saveEmployees(final Employee