本博客根据《李兴华--java8编程开发入门》视频整理而来。
业务层实现类的核心功能:
(1) 负责控制数据库的打开和关闭,当存在了业务层对象后其目的就是为了操作数据库,即:业务层对象实例化之后就必须准备好数据库连接;
(2)根据DAOFactory调用getIEmpDAOInstance()方法而后取得IEmpDAO接口对象。
业务层的实现类保存在impl子包中。
范例:定义EmpServiceImpl子类
package com.fs.dao.impl; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import com.fs.dbc.DatabaseConnection; import com.fs.factory.DAOFactory; import com.fs.service.IEmpService; import com.fs.vo.Emp; public class EmpServiceImpl implements IEmpService { // 在这个类的对象内部就提供有一个数据库连接类的实例化对象 // 一但调用了DatabaseConnection,其就会进行数据库连接 private DatabaseConnection dbc = new DatabaseConnection(); // 在进行insert过程中可能产生异常,但不管怎样,最后一定要关闭数据库,所以使用异常处理 @Override public boolean insert(Emp vo) throws Exception { try { if (DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).findById(vo.getEmpno()) == null) { return DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).doCreate(vo); } return false; // 已经存在就返回false } catch (Exception e) { throw e; // 如果有问题,就直接向上抛 } finally { this.dbc.close(); } } @Override public boolean update(Emp vo) throws Exception { try { return DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).doCreate(vo); } catch (Exception e) { throw e; // 如果有问题,就直接向上抛 } finally { this.dbc.close(); } } @Override public boolean delete(Set<Integer> ids) throws Exception { try { return DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).doRemoveBatch(ids); } catch (Exception e) { throw e; // 如果有问题,就直接向上抛 } finally { this.dbc.close(); } } @Override public Emp get(int ids) throws Exception { try { return DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).findById(ids); } catch (Exception e) { throw e; // 如果有问题,就直接向上抛 } finally { this.dbc.close(); } } @Override public List<Emp> list() throws Exception { try { return DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).findAll(); } catch (Exception e) { throw e; // 如果有问题,就直接向上抛 } finally { this.dbc.close(); } } @Override public Map<String, Object> list(int currentPage, int lineSize, String column, String keyWord) throws Exception { try { Map<String, Object> map = new HashMap<String, Object>(); map.put("allEmps", DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).findAllSplit(currentPage, lineSize, column, keyWord)); map.put("empCount", DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).getAllCount(column, keyWord)); return map; } catch (Exception e) { throw e; // 如果有问题,就直接向上抛 } finally { this.dbc.close(); } } }
都要求一个业务层调用多个数据层的操作
不同层之间的访问依靠的就是工厂类和接口进行操作。{日后自己写的功能类,只要使用了接口,就上工厂(70%)}
此时的结构实现:(子类相互之间的引用关系)
(EmpServiceImpl通过DAOFactory取得DAO的操作接口IEmpDAO,而后进行操作)