public class EmployeeDAOImpl implements EmployeeDAO{
private QueryRunner queryRunner = new QueryRunner(JdbcUtils.getDataSource());
//在该map集合中定义实体字段和数据库中表字段之间映射关系
private Map<String,String> map = new HashMap<>();
{
map.put("FIRST_NAME","firstName");
map.put("LAST_NAME","lastName");
}
@Override
public List<Employee> list() {
String sql = "select *from t_employees";
try {
List<Employee> list = queryRunner.query(sql,new BeanListHandler<Employee>(Employee.class,new BasicRowProcessor(new BeanProcessor(map))));
return list;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public Employee findById(Integer id) {
String sql = "select *from t_employees where employee_id=?";
try {
//BeanHandler implements ResultSetHandler:自动根据我们提供的类型将结果集中的数据进行封装
Employee e = queryRunner.query(sql, new BeanHandler<Employee>(Employee.class,new BasicRowProcessor(new BeanProcessor(map))), id);
return e;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public List<Employee> findByIds(Integer[] ids) {
String sql = "select *from t_employees where employee_id in "+ Arrays.toString(ids).replaceAll("\\d+", "?").replace("[", "(").replace("]",")");;//(?,?,?,?)
try {
//BeanListHandler:自动将结果集中的数据转换成List类型
List<Employee> e = queryRunner.query(sql, new BeanListHandler<Employee>(Employee.class,new BasicRowProcessor(new BeanProcessor(map))), ids);
return e;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public List<Employee> findByLike(String name) {
String sql = "select *from t_employees where first_name like ?";
try {
List<Employee> e = queryRunner.query(sql, new BeanListHandler<Employee>(Employee.class,new BasicRowProcessor(new BeanProcessor(map))), "%"+name+"%");
return e;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public List<Employee> findByDepartmentName(String departmentName) {
String sql = "select t1.* from t_employees t1 join t_departments t2 on t1.department_id=t2.department_id where t2.department_name=?";
try {
List<Employee> e = queryRunner.query(sql, new BeanListHandler<Employee>(Employee.class,new BasicRowProcessor(new BeanProcessor(map))), departmentName);
return e;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public boolean save(Employee employee) {
boolean b = false;
String sql = "insert into t_employees values(null,?,?,?,?,?,?,?,?,?,?);";
try {
Object[] parmas = {employee.getFirstName(),employee.getLastName(),employee.getEmail(),employee.getPhoneNumber(),
employee.getHireDate(),employee.getJobId(),employee.getSalary(),employee.getComm(),employee.getManagerId(),employee.getDepartmentId()};
int rows = queryRunner.update(sql,parmas);
if(rows == 1){
b = true;
}
return b;
} catch (SQLException e) {
e.printStackTrace();
}
return b;
}
@Override
public boolean update(Employee employee) {
boolean b = false;
String sql = "update t_employees set first_name=?,last_name=?,email=?,phone_number=?,hire_date=?," +
"job_id=?,salary=?,comm=?,manager_id=?,department_id=? where employee_id=?;";
try {
Object[] parmas = {employee.getFirstName(),employee.getLastName(),employee.getEmail(),employee.getPhoneNumber(),
employee.getHireDate(),employee.getJobId(),employee.getSalary(),employee.getComm(),employee.getManagerId(),employee.getDepartmentId(),
employee.getEmployeeId()};
int rows = queryRunner.update(sql,parmas);
if(rows == 1){
b = true;
}
return b;
} catch (SQLException e) {
e.printStackTrace();
}
return b;
}
@Override
public boolean delete(Integer employeeId) {
boolean b = false;
String sql = "delete from t_employees where employee_id=?";
try {
int rows = queryRunner.update(sql,employeeId);
if(rows == 1){
b = true;
}
return b;
} catch (SQLException e) {
e.printStackTrace();
}
return b;
}
}
public class TestEmployee {
public static void main(String[] args) {
EmployeeDAO dao = new EmployeeDAOImpl();
/**
* 1、查询当前表中所有数据,返回的是集合对象List<Employee>
List<Employee> list();
*/
// List<Employee> list = dao.list();
// System.out.println(list);
/**
* 2、根据id查询某个对象
Employee findById(Integer id);
*/
// Employee e = dao.findById(100);
// System.out.println(e);
/**
* 3、根据多个id查询对象
List<Employee> findByIds(Integer[] ids);
*/
// Integer[] arr = {100,101,102,103};
// List<Employee> list2 = dao.findByIds(arr);
// System.out.println(list2);
/**
* 4、根据用户名进行模糊查询
List<Employee> findByLike(String name);//根据first_name
*/
// List<Employee> list3 = dao.findByLike("K");
// System.out.println(list3);
/**
* 5、根据部门名称查询
List<Employee> findByDepartmentName(String departmentName);
*/
// List<Employee> list4 = dao.findByDepartmentName("IT");
// System.out.println(list4);
/**
* 6、添加新员工
boolean save(Employee employee);
*/
// Employee employee = new Employee(null,"wang","wu","12306@qq.com","95588", DateUtils.strToUtil("1999-09-09"),"SH_CLERK",10000L,0.0,1L,1L);
// boolean flag = dao.save(employee);
// System.out.println(flag);
/**
* 7、根据id修改员工
boolean update(Employee employee);
*/
// Employee employee = new Employee(211L,"zhao","wu","12306@qq.com","95588", DateUtils.strToUtil("1999-09-09"),"SH_CLERK",10000L,0.0,1L,1L);
// boolean flag = dao.update(employee);
// System.out.println(flag);
/**
* 8、根据id删除
boolean delete(Integer employeeId);
*/
boolean flag = dao.delete(211);
System.out.println(flag);
}
}