ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

业务层设计

2019-04-18 20:41:50  阅读:181  来源: 互联网

标签:map return 业务 事务处理 vo ls 设计 public


一.业务层的设计

概念:
  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 }

 

标签:map,return,业务,事务处理,vo,ls,设计,public
来源: https://www.cnblogs.com/yslf/p/10732097.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有