读书人

用计策模式对DAO进一步修改

发布时间: 2012-09-15 19:09:29 作者: rapoo

用策略模式对DAO进一步修改

当查询条件改变时,DAO中rowMapper方法就不能满足需求,所以要将rowMapper单独定义成一个接口,在DAO中根据自己的需求定义自己的DAO。

1、定义RowMapper接口:

package com.itcast.myjdbc.dao.impl;import java.sql.ResultSet;import java.sql.SQLException;import com.itcast.myjdbc.bean.Employer;import com.itcast.myjdbc.dao.refact.MyDAOTemplate;import com.itcast.myjdbc.dao.refact.RowMapper;public class EmployerDAOJdbcImpl3 {MyDAOTemplate template = new MyDAOTemplate();public Employer findEmployer1(String name) {String sql = "select name,birthday from TB_EMPLOYERS where name = ?";Object [] args = new Object[] {name};Employer employer = null;try {employer = (Employer) template.find(sql, args, new RowMapper() {@Overridepublic Object rowMapper(ResultSet rs, Object obj)throws SQLException {Employer employer = (Employer) obj;employer = new Employer();employer.setName(rs.getString("name"));employer.setBirthday(rs.getDate("birthday"));return employer;}});} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return employer;}public Employer findEmployer2(String name) {String sql = "select name,birthday,salary from TB_EMPLOYERS where name = ?";Object [] args = new Object[] {name};Employer employer = null;try {employer = (Employer) template.find(sql, args, new RowMapper() {@Overridepublic Object rowMapper(ResultSet rs, Object obj)throws SQLException {Employer employer = (Employer) obj;employer = new Employer();employer.setName(rs.getString("name"));employer.setBirthday(rs.getDate("birthday"));employer.setSalary(rs.getFloat("salary"));return employer;}});} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return employer;}}

?

读书人网 >软件架构设计

热点推荐