业务层设计与开发(业务层标准实现类) | 学习笔记

简介: 简介:快速学习业务层设计与开发(业务层标准实现类)

开发者学堂课程【DAO 开发实战业务分析:业务层设计与开发(业务层标准实现类)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/399/detail/5167


业务层设计与开发(业务层标准实现类)


内容介绍:

一、主要操作

二、具体操作

三、修改操作

四、总结


一、主要操作

本着业务层的主要操作有两个:

分别是控制数据库的打开和关闭,可以通过 DatabaseConnection 完成的以及控制数据层的调用,需要通过 Factory 工厂类取得 IMemeberDAO 接口对象,同时还需要传递 Connection。说明在整个业务层之中不管数据层的操作是否有问题,最终都一定要进行数据库的关闭处理。

IMemberService 的子类为 IMemberServiceImpl 子类,这个子类要求保存在cn.mldn.oracle.service.impl 子包之中。

然后跟上 service ,写出 impl 位,找到 MemberServiceImpl,实现IMemberService 的操作接口,

可以得到程序如下:

1package cn.mldn.oracle.service.impl;

2

3*import java.util.list;

9

10public class MemberServiceImpl implements IMemberService {

11

12    @Override

13    public boolean add(Member vo) throws Exception {

14       // TODO Auto-generated method stub

15       return false;

16    }

17 

18    @Override

19    public boolean add(Member vo) throws Exception {

20       // TODO Auto-generated method stub

21       return false;

22    }

而一旦取得11行这个位的对象,意味着要开始操作数据库,所以代码写为private DatabaseConnection dbc = new DatabaseConnection() ;。因为程序的设计问题,一旦要取得本位十位化的项,就一定意味着要有数据库的连接对象。

数据层需要一个明确的 Connection 参数传递,导致整个设计的过程之中都需要考虑 Connection 问题,但后面改进后就不用再进行整个过程的考虑问题即为程序的设计问题。

不管中间经过了多少个操作,都会有异常出现,然后将异常向出抛,最后都要执行close()操作。即程序如下:

public boolean add(Member vo) throws Exception {

try {

} catch(Exception e) {

throw e ;

} finally {

this.dbc.close();

}

return false;

}

所以所有的操作代码加总,无论进行怎样的变化,此结构是不能够被改变的,数据库最后一定要进行关闭处理。


二、具体操作

(1)add 操作

举例如下:

public boolean add(Member vo) throws Exception {

try {

// 1、取得IMemeberDAO接口对象

IMemberDAO dao = DAOFactory.getInstance(MemberDAOImpl.class, this.dbc.getConnection())

if(dao.findById(vo.getMid())== null){// 2、判断当前的id是否存在

此处程序说明要根据 id 查找,但是没有查找到数据,用户则不存在,如果不存在,则再判断,

程序如下:

if(dao.findById(vo.getMid())== null){// 2、判断当前的id是否存在

if(dao. dao.findByPhone(vo.getPhone())==null){  // 3、电话不存在

if(vo.getAge() < 0){

如果小于等于0,则表示没有设置电话,即为:

if(vo.getAge() <= 0){  //没有设置电话/年龄或者设置错误

vo.setAge(-1);  //使用-1作为一个标志结果

}

如果以上都没问题,则

return dao.doCreate(vo) ;   // 4、进行数据库保存

以上可看出一个业务层要牵涉多个数据层调用。

(2)edit 操作

举例如下:

public boolean edit (Member vo) throws Exception {

try {

// 1、取得IMemeberDAO接口对象

IMemberDAO dao = DAOFactory.getInstance(MemberDAOImpl.class, this.dbc.getConnection())

// 2、要根据电话来查找数据是否存在,但需要考虑到判断的用户不能是自己

Member temp = dao.findByPhone(phone) ;

然后再找到

Member temp = dao.findByPhone(vo.getPhon()) ;

完成后要进行判断

if(temp == null) {

return dao.doUpdate(vo) ;

} else {     //不等于空,表示现在电话存在

if(vo.getMid().equals(temp.getMid())){  //自己的电话

return dao.doUpdate(vo

}

}


三、修改操作

(1)remove 修改

举例如下:

public boolean remove (Set<String> ids) throws Exception {

try {

if (ids == null || ids.size() == 0) {

return false ;

}

return DAOFactory.getInstance(MemberDAOImpl.class, this.dbc.getConnection()).doRemoveBatch(ids) ;

(2)get修改

举例如下:

public Member get (String id) throws Exception {

try {

return DAOFactory.getInstance(MemberDAOImpl.class,

this.dbc.getConnection()).findById(id;

(3)list 修改

举例如下:

public List<Member>list() throws Exception {

try {

return DAOFactory.getInstance(MemberDAOImpl.class,

this.dbc.getConnection()).findAll();

(4)Map 修改

举例如下:

public Map<String,Object>list(int currentPage, int lineSize) throws Exception {

try {

Map<String,Object>map = new HashMap<String,Object>() ;

} catch(Exception e) {

throw e ;

} finally {

this.dbc.close();

}

return map 

}

此处 map 无法返回。需要放到

Map<String,Object>map = new HashMap<String,Object>() ;

return map;

才可返回。因为是在 try 中定义的 map,所以只能在 try 中进行操作。

此时注意所需要的 key,分别是allMember和memberCount

public Map<String,Object>list(int currentPage, int lineSize) throws Exception {

try {

Map<String,Object>map = new HashMap<String,Object>() ;

IMemberDAO dao = DAOFactory.getInstance(MemberDAOImpl.class, this.dbc.getConnection())

map.put(“allMembers”, value) ;

再找到 dao,即

map.put(“allMembers”, dao.findAllSplit(currentPage, lineSize)) ;

map.put(“memberCount”, value) ;

再找到dao,即

map.put(“memberCount”, dao.getAllCount() ) ;

return map

同样在以下可使用,即

public Map<String,Object> list(String column, String keyword, int currentPage, int lineSize) throws Exception {

try {

Map<String,Object>map = new HashMap<String,Object>() ;

IMemberDAO dao = DAOFactory.getInstance(MemberDAOImpl.class, this.dbc.getConnection())

map.put(“allMembers”, dao.findAllSplit(currentPage, lineSize)) ;

map.put(“memberCount”, dao.getAllCount() ) ;

return map

但此时要此外做一个判断,即

IMemberDAO dao = DAOFactory.getInstance(MemberDAOImpl.class, this.dbc.getConnection())

if(column == null || keyWord == null || “”.equals(keyword))

map.put(“allMembers”, dao.findAllSplit(currentPage, lineSize)) ;

map.put(“memberCount”, dao.getAllCount() ) ;

} else {

map.put(“allMembers”,dao.findAllSplit(column,keyword,currentPage, lineSize)) ;

map.put(“memberCount”,dao.getAllCount(column,keyword) ) ;

}

return map

在整个业务层的实现子类里面到处充斥着打开-关闭数据库。如完成核心业务

IMemberDAO dao = DAOFactory.getInstance(MemberDAOImpl.class, this.dbc.getConnection())

// 2、要根据电话来查找数据是否存在,但需要考虑到判断的用户不能是自己

Member temp = dao.findByPhone(phone) ;

然后再找到

Member temp = dao.findByPhone(vo.getPhon()) ;

完成后要进行判断

if(temp == null) {

return dao.doUpdate(vo) ;

} else {     //不等于空,表示现在电话存在

if(vo.getMid().equals(temp.getMid())){  //自己的电话

return dao.doUpdate(vo

}

}

,其余都是跟业务有关的辅助操作。同时数据库也要考虑到事务问题,如删除时如果发现有一部分数据没删除并且出错,错误之前时都会默认执行,这个过程也要进行一些控制处理才合适,此时发现业务层只能说是完成了功能,但是不够完善,所以还要进行大量的修改。


四、总结

在现在整个业务层的处理中,业务层依然要通过DatabaseConnection 操作 Connection,在之后的处理过程中也要跟上 MemberDAO 接口包括什么,不关注接口子位的问题,因为子位被 DAOFactory 所隐含,所以只取得 DAO 的操作接口,而后 DAO 的操作接口与 Connection 产生关系,从而实现业务层的操作流程,以上就是业务层的操作子类。

相关文章
|
1月前
|
测试技术
封装并集中处理业务逻辑
封装并集中处理业务逻辑
12 1
|
存储 设计模式 缓存
复杂逻辑业务层治理探究
复杂逻辑业务层治理探究
302 1
|
开发者
业务层设计与开发(定义业务层标准) | 学习笔记
简介:快速学习业务层设计与开发(定义业务层标准)
108 0
业务层设计与开发(定义业务层标准) | 学习笔记
|
开发者
待业务层设计与开发(业务层工厂类) | 学习笔记
简介:快速学习待业务层设计与开发(业务层工厂类)
51 0
|
SQL Java 数据库连接
数据层设计与开发(数据层标准实现类) | 学习笔记
简介:快速学习数据层设计与开发(数据层标准实现类)
123 0
数据层设计与开发(数据层标准实现类) | 学习笔记
|
开发者
数据层设计与开发(数据层工厂类) | 学习笔记
简介:快速学习数据层设计与开发(数据层工厂类)
78 0
数据层设计与开发(数据层工厂类) | 学习笔记
|
设计模式 开发框架 数据库
业务层结构优化 | 学习笔记
简介:快速学习业务层结构优化
68 0
|
JSON 前端开发 数据格式
|
安全 前端开发 物联网
接口设计篇《怎么设计好的接口?》
这样设计接口【升职加薪】?
357 0
|
存储 XML 算法
java三层架构:数据访问层、业务逻辑层、表现层
java三层架构:数据访问层、业务逻辑层、表现层
1547 0