热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java业务类_Java_业务层开发

业务是整个项目的核心,每一个业务的处理都是由控制层调用的(本次不考虑控制层,只考虑客户端直接调用业务层的形式),所以整个代码里业务层依然是

业务是整个项目的核心,每一个业务的处理都是由控制层调用的(本次不考虑控制层,只考虑客户端直接调用业务层的形式),所以整个代码里业务层依然是一个标准,控制层要想取得业务层对象,一定也是依靠工厂类。

1.定义业务层开发标准

考虑到日后要加入事物的控制问题,所以建议方法上要有一些特殊的考虑,请使用正常的名字。例如: insert() update()

将所有的业务层都保存在service的子包下

范例:定义IEmpService

如果数据层的标准定义是根据实体表来决定的,那么业务层可不是与表一一对应的。

package xxx.service;

import java.util.List;

import java.util.Map;

import java.util.Set;

import xxx.vo.Emp;public interfaceIEmpService {/**

* 实现雇员信息增加操作,在本操作中需要使用IEmpDAO接口中的如下方法:

*

首先要利用IEmpDAO.findByID()方法判断要增加的雇员编号是否存在。

*

如果雇员编号不存在,则使用IEmpDAO.doCreate()方法保存雇员信息

* @param vo 包含了要增加数据的VO类对象

* @return 数据增加成功返回true,否则返回false

* @throws Exception IEmpDAO接口中的抛出异常*/

publicboolean insert(Emp vo) throws Exception;/**

* 实现数据的修改操作,调用的是IEmpDAO.doUpdate()方法,此操作属于全部修改

* @param vo 包含要修改的数据信息

* @return 修改成功返回true,否则返回false

* @throws Exception IEmpDAO接口中的抛出异常*/

publicboolean update(Emp vo) throws Exception;/**

* 实现数据的批量删除操作,在本操作中需要执行如下调用:

*

判断要删除数据传入的集合内容是否为空(判断null以及size)

*

如果确定有删除的数据,则调用IEmpDAO.doRemove()方法删除

* @param ids 包含了要删除数据的所有ID内容

* @return 删除成功返回true,否则返回false

* @throws Exception IEmpDAO接口中的抛出异常*/

public boolean delete(Setids) throws Exception;/**

* 根据雇员编号查询出一个雇员的完整信息,调用的是IEmpDAO.findById()方法查询

* @param id 要查询的雇员编号信息

* @return 如果可以查询到雇员则以VO的形式返回,如果查询不到则返回null

* @throws Exception IEmpDAO接口中的抛出异常*/

public Emp get(intid) throws Exception;/**

* 查询雇员的全部数据,调用的是IEmpDAO.findAll()方法查询

* @return 所有的查询记录,以List集合返回

* @throws Exception IEmpDAO接口中的抛出异常*/

public Listlist() throws Exception;/**

* 实现数据模糊查询操作,同时会返回符合查询要求的数据量,本次操作要调用以下的功能:

*

调用IEmpDAO.findAllSplit()方法,分页查询要显示的数据

*

调用IEmpDAO.getAllCount()方法,统计数据的个数

* @param column 模糊查询字段

* @param keyWord 模糊查询关键字

* @param currentPage 当前所在页

* @param lineSize 每页显示的长度

* @return 本方法要返回两个数据,所有使用Map集合返回,出现的内容如下:

*

key = allEmps、value = IEmpDAO.findAllSplit(),返回的是List

*

key = empCount、value = IEmpDAO.getAllCount(),返回的是Integer

* @throws Exception IEmpDAO接口中的抛出异常*/

public Map listSplit(String column,String keyWord,int currentPage,intlineSize) throws Exception;

}

2.定义业务层实现类

注意事项:

要通过DAOFactory找到所需要的数据层的接口;

要控制DatebaseConnection类取得Connection接口对象;

不管操作如何,最后一定要关闭数据库,如果有异常交给被调用处处理;

可以在xxx.service.impl子包中定义业务层的实现子类

范例:定义EmpServiceImpl子类

package xxx.service.impl;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Set;

import xxx.dbc.DatabaseConnection;

import xxx.factory.DAOFactory;

import xxx.service.IEmpService;

import xxx.vo.Emp;/**

* 当取得了本类对象时,就意味着可以进行数据库操作了。

* @author James

**/

public classEmpSericeImpl implements IEmpService {private DatabaseConnection dbc = newDatabaseConnection();

@Overridepublicboolean insert(Emp vo) throws Exception {try{//利用DAOFactory类中的getIEmpInstance()方法取得IEmpDAO接口对象//在调用getIEmpInstance()的时候需要通过DatabaseConnection对象取得Connection接口对象,传递进去//调用IEmpDAO接口中findById()方法判断要增加的雇员编号是否存在

if(DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).findById(vo.getEmpno()) == null) {return DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).doCreate(vo);

}return false;

}catch(Exception e) {throwe;

}finally{this.dbc.close();;

}

}

@Overridepublicboolean update(Emp vo) throws Exception {try{return DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).doUpdate(vo);

}catch(Exception e) {throwe;

}finally{this.dbc.close();;

}

}

@Overridepublic boolean delete(Setids) throws Exception {try{if(ids.size() == 0) { //没有要删除的数据

return false;

}return DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).doRemove(ids);

}catch(Exception e) {throwe;

}finally{this.dbc.close();;

}

}

@Overridepublic Emp get(intid) throws Exception {try{return DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).findById(id);

}catch(Exception e) {throwe;

}finally{this.dbc.close();;

}

}

@Overridepublic Listlist() throws Exception {try{return DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).findAll();

}catch(Exception e) {throwe;

}finally{this.dbc.close();;

}

}

@Overridepublic Map listSplit(String column, String keyWord, int currentPage, intlineSize)

throws Exception {try{

Map map = new HashMap();

map.put("allEmps", DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).findAllSplit(column, keyWord, currentPage, lineSize));

map.put("empCount", DAOFactory.getIEmpDAOInstance(this.dbc.getConnection()).getAllCount(column, keyWord));returnmap;

}catch(Exception e) {throwe;

}finally{this.dbc.close();;

}

}

}

3.定义业务层工厂类

由于最终业务层是要留给控制层使用的,所以必须有工厂类,但是与数据层工厂类相比,业务层的工厂类不需要传递参数。

975b6d3918ed26987a14305adf42e8f4.png

package xxx.factory;

import xxx.service.IEmpService;

import xxx.service.impl.EmpSericeImpl;public classServiceFactory {public staticIEmpService getIEmpServiceInstance() {return newEmpSericeImpl();

}

}

73e3cbc6f7eea6b8e865acb495718a3a.png



推荐阅读
  • 微信小程序支付官方参数小程序中代码后端发起支付代码支付回调官方参数文档地址:https:developers.weixin.qq.comminiprogramdeva ... [详细]
  • SQLite是一种轻量级的关系型数据库管理系统,尽管体积小巧,却能支持高达2TB的数据库容量,每个数据库以单个文件形式存储。本文将详细介绍SQLite在Android开发中的应用,包括其数据存储机制、事务处理方式及数据类型的动态特性。 ... [详细]
  • 本文详细介绍了Spring AOP注解的基本概念及其实现方式,并通过实例演示了如何在项目中使用这些注解进行面向切面的编程。旨在帮助开发者更好地理解和运用Spring AOP功能。 ... [详细]
  • 本文详细介绍了如何使用 Python 编程语言中的 Scapy 库执行 DNS 欺骗攻击,包括必要的软件安装、攻击流程及代码示例。 ... [详细]
  • 深入解析Android Activity生命周期
    本文详细探讨了Android中Activity的生命周期,通过实例代码和详细的步骤说明,帮助开发者更好地理解和掌握Activity各个阶段的行为。 ... [详细]
  • 本文介绍了JSP的基本概念、常用标签及其功能,并通过示例详细说明了如何在JSP页面中使用Java代码。 ... [详细]
  • 本文详细介绍了在Mac操作系统中使用Python连接MySQL数据库的方法,包括常见的错误处理及解决方案。 ... [详细]
  • 本文介绍如何使用Python编程语言合并字典中具有相同集合值的键,并提供两种实现方法。 ... [详细]
  • BeautifulSoup4 是一个功能强大的HTML和XML解析库,它能够帮助开发者轻松地从网页中提取信息。本文将介绍BeautifulSoup4的基本功能、安装方法、与其他解析工具的对比以及简单的使用示例。 ... [详细]
  • 本教程旨在指导开发者如何在Android应用中通过ViewPager组件实现图片轮播功能,适用于初学者和有一定经验的开发者,帮助提升应用的视觉吸引力。 ... [详细]
  • 本文探讨了Java中有效停止线程的多种方法,包括使用标志位、中断机制及处理阻塞I/O操作等,旨在帮助开发者避免使用已废弃的危险方法,确保线程安全和程序稳定性。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 详解MyBatis二级缓存的启用与配置
    本文深入探讨了MyBatis二级缓存的启用方法及其配置细节,通过具体的代码实例进行说明,有助于开发者更好地理解和应用这一特性,提升应用程序的性能。 ... [详细]
  • 本文详细介绍了Objective-C中的面向对象编程概念,重点探讨了类的定义、方法的实现、对象的创建与销毁等内容,旨在帮助开发者更好地理解和应用Objective-C的面向对象特性。 ... [详细]
  • 本文介绍了多种将多行数据合并为单行的方法,包括使用动态SQL、函数、CTE等技术,适用于不同的SQL Server版本。 ... [详细]
author-avatar
王耀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有