• 业务层设计


    一.业务层的设计

    概念:
      mvc 设计模式, 其中 M 表示 Modle 层(模型层), 其中模型层包括了数据层(dao) 和业务层(servive).
      业务层最终是被控制层调用了,此时如果修改了业务层的代码那么控制层的代码也随之要修改,耦合度较高
      要解决这样的问题需要为业务层定义一套标准(一个接口)

    1.定义出 service 层的接口 (IEmpService)

     1 public interface IEmpService {
     2     /**
     3      *     实现数据的增加 调用 dao 层的 insert()方法
     4      * @param vo 包含了要插入的数据的 vo 对象
     5      * @return 成功返回 true 否则返回 false
     6      */
     7     public boolean addEmp(Emp vo);
     8     /**
     9      *     根据编号删除数据 调用 dao 层的 deleteById()方法
    10      * @param id 要删除的数据的编号
    11      * @return 成功返回 true 否则返回 false
    12      */
    13     public boolean removeEmpById(Integer id);
    14     /**
    15      *     修改数 调用 dao 层的 update() 方法
    16      * @param vo 保存了要修改的数据的 vo 对象
    17      * @return 修改成功返回 true 否则返回 false
    18      */
    19     public boolean editEmp(Emp vo);
    20     /**
    21      *     根据编号查询数据
    22      * @param id 要查询的数据编号
    23      * @return 有数剧返回 Emp 对象 否则返回 null
    24      */
    25     public Emp findEmpById(Integer id);
    26     /**
    27      *     实现模糊分页查询, 调用 dao 层的方法
    28      *     <li>调用 selectSplitAll() 方法,取得雇员信息的集合</li>
    29      *     <li>抵用 selectCount() 方法, 取得查询到的数据量
    30      * @param kw 模糊查询的关键字
    31      * @param cp 当前页
    32      * @param ls 每页显示的数据量
    33      * @return 保存雇员集合与数据量的 Map 对象
    34      */
    35     public Map<String,Object> findAllSplit(String kw,Integer cp, Integer ls);
    36     /**
    37      *     批量删除数据
    38      * @param ids 保存了要删除的数据的编号的集合
    39      * @return 删除的行数
    40      */
    41     public boolean removeBacth(List<Object> ids);
    42 }

    2.定义出 service 接口的实现类

      1 public class EmpServiceImpl implements IEmpService {
      2     //获取连接对象
      3     private Connection conn = DBUitl.getConnection();
      4     
      5     //需要调用数据层的方法所以需要确定数据层的实现类对象
      6     private IEmpDAO empDAO = new EmpDAOImpl(conn);
      7 
      8     @Override
      9     public boolean addEmp(Emp vo) {
     10         try {
     11             //可能需要事务处理 (取消事务的自动提交)
     12             return this.empDAO.insert(vo)>0;
     13             //可能需要事务处理 (提交事务)
     14         } catch (Exception e) {
     15             e.printStackTrace();
     16             //可能需要事务处理 (事务回滚)
     17         } finally {
     18             DBUitl.close(conn);
     19         }
     20         return false;
     21     }
     22 
     23     @Override
     24     public boolean removeEmpById(Integer id) {
     25         try {
     26             //可能需要事务处理 (取消事务的自动提交)
     27             return this.empDAO.deleteById(id)>0;
     28             //可能需要事务处理 (提交事务)
     29         } catch (Exception e) {
     30             e.printStackTrace();
     31             //可能需要事务处理 (事务回滚)
     32         } finally {
     33             DBUitl.close(conn);
     34         }
     35         return false;
     36     }
     37 
     38     @Override
     39     public boolean editEmp(Emp vo) {
     40         try {
     41             //可能需要事务处理 (取消事务的自动提交)
     42             return this.empDAO.update(vo)>0;
     43             //可能需要事务处理 (提交事务)
     44         } catch (Exception e) {
     45             e.printStackTrace();
     46             //可能需要事务处理 (事务回滚)
     47         } finally {
     48             DBUitl.close(conn);
     49         }
     50         return false;
     51     }
     52 
     53     @Override
     54     public Emp findEmpById(Integer id) {
     55         try {
     56             //可能需要事务处理 (取消事务的自动提交)
     57             return this.empDAO.selectById(id);
     58             //可能需要事务处理 (提交事务)
     59         } catch (Exception e) {
     60             e.printStackTrace();
     61             //可能需要事务处理 (事务回滚)
     62         } finally {
     63             DBUitl.close(conn);
     64         }
     65         return null;
     66     }
     67 
     68     @Override
     69     public Map<String, Object> findAllSplit(String kw, Integer cp, Integer ls) {
     70         Map<String,Object> map = new HashMap<String, Object>();
     71         try {
     72             //查询雇员的信息
     73             map.put("emplist",this.empDAO.selectSplitAll("%"+kw+"%", cp, ls));
     74             //统计数据量
     75             int number = this.empDAO.selectCount(kw);
     76             //计算出总的页数
     77             //int allPages = number/ls+number%ls==0?0:1;
     78             //int allPages = (int)Math.ceil(number/(double)ls));
     79             map.put("count",number);
     80             map.put("allPages",(int)Math.ceil(number/(double)ls));
     81             map.put("kw",kw);
     82             map.put("cp",cp);
     83             map.put("ls",ls);
     84             return map;
     85         } catch (Exception e) {
     86             e.printStackTrace();
     87         } finally {
     88             DBUitl.close(conn);
     89         }
     90         return null;
     91     }
     92 
     93     @Override
     94     public boolean removeBacth(List<Object> ids) {
     95         try {
     96             //可能需要事务处理 (取消事务的自动提交)
     97             return this.empDAO.deleteBatch(ids)>0;
     98             //可能需要事务处理 (提交事务)
     99         } catch (Exception e) {
    100             e.printStackTrace();
    101             //可能需要事务处理 (事务回滚)
    102         } finally {
    103             DBUitl.close(conn);
    104         }
    105         return false;
    106     }
    107 }

    测试

    1 public class Test {
    2     public static void main(String[] args) throws Exception {    
    3         IEmpService empService = new EmpServiceImpl();
    4         Map<String,Object> map = empService.findAllSplit("A", 1, 10);
    5         System.out.println("查询到的数据量是:" + map.get("count"));
    6         System.out.println("雇员信息是: " + map.get("emplist"));
    7     }
    8 }
  • 相关阅读:
    一个matlab小程序:挑出沪市A股年报与一季度报在同一天发布的股票
    AWK
    matlab搜索路径
    从新浪财经上下载交易明细数据并统计每天的买卖笔数(shell 命令行)
    AWK截取字符串
    tar GNU
    工作效率上的错觉(转载)
    matlab双精度浮点数编码及区间覆盖(原创)
    DNS服务器设置(Ubuntu10.04)
    sed
  • 原文地址:https://www.cnblogs.com/yslf/p/10732097.html
Copyright © 2020-2023  润新知