Service 层实现
一、实验介绍
1.1 实验内容
本节课程主要利用 Spring 框架实现 Service 层。
1.2 实验知识点
- Spring 框架
1.3 实验环境
- JDK1.8
- Eclipse JavaEE
二、实验步骤
在项目 hrms
的目录 src/main/java
下新建包 com.shiyanlou.service
,作为 Servcie 层接口的包,新建包 com.shiyanlou.service.impl
作为 Servcie 层实现的包。
2.1 AdminService 接口与实现
在包 com.shiyanlou.service
下建一个 AdminService.java
接口文件,代码如下:
package com.shiyanlou.service;
import java.util.List;
import java.util.Map;
import com.shiyanlou.domain.Admin;
public interface AdminService {
/** 登录
*
* @param admin
* @return
*/
public Admin login(Admin admin);
/** 根据条件查询管理员
*
* @param map
* @return
*/
public List<Admin> findAdmins(Map<String, Object> map);
/** 根据条件查询管理员人数
*
* @param map
* @return
*/
public Integer getCount(Map<String, Object> map);
/** 添加管理员
*
* @param admin
* @return
*/
public Integer addAdmin(Admin admin);
/** 修改管理员
*
* @param admin
* @return
*/
public Integer updateAdmin(Admin admin);
/** 删除管理员
*
* @param id
* @return
*/
public Integer deleteAdmin(Integer id);
}
在包 com.shiyanlou.service.impl
下建一个类 AdminServiceImpl
实现上述的接口,代码如下:
package com.shiyanlou.service.impl;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.shiyanlou.dao.AdminDao;
import com.shiyanlou.domain.Admin;
import com.shiyanlou.service.AdminService;
@Service("adminService")
public class AdminServiceImpl implements AdminService {
// 自动注入 DAO 对象
@Resource
private AdminDao adminDao;
// 实现接口中的方法
@Override
public Admin login(Admin admin) {
return adminDao.login(admin);
}
@Override
public List<Admin> findAdmins(Map<String, Object> map) {
return adminDao.findAdmins(map);
}
@Override
public Integer getCount(Map<String, Object> map) {
return adminDao.getCount(map);
}
@Override
public Integer addAdmin(Admin admin) {
return adminDao.addAdmin(admin);
}
@Override
public Integer updateAdmin(Admin admin) {
return adminDao.updateAdmin(admin);
}
@Override
public Integer deleteAdmin(Integer id) {
return adminDao.deleteAdmin(id);
}
}
2.2 PostService 接口与实现
在包 com.shiyanlou.service
下建一个 PostService.java
接口文件,代码如下:
package com.shiyanlou.service;
import java.util.List;
import java.util.Map;
import com.shiyanlou.domain.Post;
public interface PostService {
/** 根据条件查询公告
*
* @param map
* @return
*/
public List<Post>findPosts(Map<String, Object> map);
/** 根据条件查询公告数量
*
* @param map
* @return
*/
public Integer getCount(Map<String, Object> map);
/** 添加公告
*
* @param post
* @return
*/
public Integer addPost(Post post);
/** 修改公告
*
* @param post
* @return
*/
public Integer updatePost(Post post);
/** 删除公告
*
* @param id
* @return
*/
public Integer deletePost(Integer id);
/** 根据 ID 查询公告信息
*
* @param id
* @return
*/
public Post getPostById(Integer id);
}
在包 com.shiyanlou.service.impl
下建一个类 PostServiceImpl
实现上述的接口,代码如下:
package com.shiyanlou.service.impl;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.shiyanlou.dao.PostDao;
import com.shiyanlou.domain.Post;
import com.shiyanlou.service.PostService;
@Service("postService")
public class PostServiceImpl implements PostService {
// 自动注入 DAO 对象
@Resource
private PostDao postDao;
// 实现接口中的方法
@Override
public List<Post> findPosts(Map<String, Object> map) {
return postDao.findPosts(map);
}
@Override
public Integer getCount(Map<String, Object> map) {
return postDao.getCount(map);
}
@Override
public Integer addPost(Post post) {
return postDao.addPost(post);
}
@Override
public Integer updatePost(Post post) {
return postDao.updatePost(post);
}
@Override
public Integer deletePost(Integer id) {
return postDao.deletePost(id);
}
@Override
public Post getPostById(Integer id) {
return postDao.getPostById(id);
}
}
2.3 DepartmentService 接口与实现
在包 com.shiyanlou.service
下建一个 DepartmentService.java
接口文件,代码如下:
package com.shiyanlou.service;
import java.util.List;
import java.util.Map;
import com.shiyanlou.domain.Department;
public interface DepartmentService {
/** 根据条件查询部门
*
* @param map
* @return
*/
public List<Department> findDepartments(Map<String, Object> map);
/** 根据条件查询部门数量
*
* @param map
* @return
*/
public Integer getCount(Map<String, Object> map);
/** 添加部门
*
* @param department
* @return
*/
public Integer addDepartment(Department department);
/** 修改部门
*
* @param department
* @return
*/
public Integer updateDepartment(Department department);
/** 删除部门
*
* @param id
* @return
*/
public Integer deleteDepartment(Integer id);
}
在包 com.shiyanlou.service.impl
下建一个类 DepartmentServiceImpl
实现上述的接口,代码如下:
package com.shiyanlou.service.impl;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.shiyanlou.dao.DepartmentDao;
import com.shiyanlou.domain.Department;
import com.shiyanlou.service.DepartmentService;
@Service("departmentService")
public class DepartmentServiceImpl implements DepartmentService {
// 自动注入 DAO 对象
@Resource
private DepartmentDao departmentDao;
// 实现接口中的方法
@Override
public List<Department> findDepartments(Map<String, Object> map) {
return departmentDao.findDepartments(map);
}
@Override
public Integer getCount(Map<String, Object> map) {
return departmentDao.getCount(map);
}
@Override
public Integer addDepartment(Department department) {
return departmentDao.addDepartment(department);
}
@Override
public Integer updateDepartment(Department department) {
return departmentDao.updateDepartment(department);
}
@Override
public Integer deleteDepartment(Integer id) {
Integer flag = null;
// 如果删除关联外键的行记录,抛出异常
try {
flag = departmentDao.deleteDepartment(id);
} catch (Exception e) {
throw new RuntimeException();
}
return flag;
}
}
2.4 PositionService 接口与实现
在包 com.shiyanlou.service
下建一个 PositionService.java
接口文件,代码如下:
package com.shiyanlou.service;
import java.util.List;
import java.util.Map;
import com.shiyanlou.domain.Position;
public interface PositionService {
/** 根据条件查询职位
*
* @param map
* @return
*/
public List<Position> findPositions(Map<String, Object> map);
/** 根据条件查询职位数量
*
* @param map
* @return
*/
public Integer getCount(Map<String, Object> map);
/** 添加职位
*
* @param position
* @return
*/
public Integer addPosition(Position position);
/* 修改职位
*
* @param position
* @return
*/
public Integer updatePosition(Position position);
/** 删除职位
*
* @param id
* @return
*/
public Integer deletePosition(Integer id);
}
在包 com.shiyanlou.service.impl
下建一个类 PositionServiceImpl
实现上述的接口,代码如下:
package com.shiyanlou.service.impl;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.shiyanlou.dao.PositionDao;
import com.shiyanlou.domain.Position;
import com.shiyanlou.service.PositionService;
@Service("positionService")
public class PositionServiceImpl implements PositionService {
// 自动注入 DAO 对象
@Resource
private PositionDao positionDao;
// 实现接口中的方法
@Override
public List<Position> findPositions(Map<String, Object> map) {
return positionDao.findPositions(map);
}
@Override
public Integer getCount(Map<String, Object> map) {
return positionDao.getCount(map);
}
@Override
public Integer addPosition(Position position) {
return positionDao.addPosition(position);
}
@Override
public Integer updatePosition(Position position) {
return positionDao.updatePosition(position);
}
@Override
public Integer deletePosition(Integer id) {
Integer flag = null;
// 如果删除关联外键的行记录,抛出异常
try {
flag = positionDao.deletePosition(id);
} catch (Exception e) {
throw new RuntimeException();
}
return flag;
}
}
2.5 EmployeeService 接口与实现
在包 com.shiyanlou.service
下建一个 EmployeeService.java
接口文件,代码如下:
package com.shiyanlou.service;
import java.util.List;
import java.util.Map;
import com.shiyanlou.domain.Employee;
import com.shiyanlou.domain.Post;
public interface EmployeeService {
/** 根据条件查询员工
*
* @param map
* @return
*/
public List<Post>findEmployees(Map<String, Object> map);
/** 根据条件查询员工人数
*
* @param map
* @return
*/
public Integer getCount(Map<String, Object> map);
/** 添加员工
*
* @param employee
* @return
*/
public Integer addEmployee(Employee employee);
/** 修改员工
*
* @param employee
* @return
*/
public Integer updateEmployee(Employee employee);
/** 删除员工
*
* @param id
* @return
*/
public Integer deleteEmployee(String id);
}
在包 com.shiyanlou.service.impl
下建一个类 EmployeeServiceImpl
实现上述的接口,代码如下:
package com.shiyanlou.service.impl;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.shiyanlou.dao.EmployeeDao;
import com.shiyanlou.domain.Employee;
import com.shiyanlou.domain.Post;
import com.shiyanlou.service.EmployeeService;
@Service("employeeService")
public class EmployeeServiceImpl implements EmployeeService {
// 自动注入 DAO 对象
@Resource
private EmployeeDao employeeDao;
// 实现接口中的方法
@Override
public List<Post> findEmployees(Map<String, Object> map) {
return employeeDao.findEmployees(map);
}
@Override
public Integer getCount(Map<String, Object> map) {
return employeeDao.getCount(map);
}
@Override
public Integer addEmployee(Employee employee) {
Integer flag = null;
// 如果插入记录主键重复,抛出异常
try {
flag = employeeDao.addEmployee(employee);
} catch (Exception e) {
throw new RuntimeException();
}
return flag;
}
@Override
public Integer updateEmployee(Employee employee) {
return employeeDao.updateEmployee(employee);
}
@Override
public Integer deleteEmployee(String id) {
return employeeDao.deleteEmployee(id);
}
}
三、实验总结
到这里我们就完成了 Service 层的代码实现,下一节我们将完成 MyBatis 和 Spring 的整合及测试。
Service 层实现的更多相关文章
- java中Action层、Service层和Dao层的功能区分
Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO只 ...
- DAO层,Service层,Controller层、View层 的分工合作
DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口 ...
- spring aop对service层日志和异常的处理
1.aop是什么 AOP是Aspect Oriented Programming的缩写,意思是面向切面编程,与OOP(Object Oriented Programming)面向对象编程对等,都是一种 ...
- 谈谈service层在mvc框架中的意义和职责
mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计, ...
- 浅谈Service层为何要有接口
被人随意问了一句,为何每个service层都要写一个接口呢,多麻烦~虽然想说点什么,但是又不知道从何说起,只好从新整理一下思绪. 情景1:在开源框架中有很多这种情况,就是某个功能支持用户自定义扩展.说 ...
- 【Java EE 学习 24 下】【注解在数据库开发中的使用】【反射+注解+动态代理在事务中的应用service层】
一.使用注解可以解决JavaBean和数据库中表名不一致.字段名不一致.字段数量不一致的问题. 1.Sun公司给jdbc提供的注解 @Table.@Column.@Id.@OneToMany.@One ...
- [转]DAO层,Service层,Controller层、View层
来自:http://jonsion.javaeye.com/blog/592335 DAO层 DAO 层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DA ...
- 搭建DAO层和Service层代码
第一部分建立实体和映射文件 1 通过数据库生成的实体,此步骤跳过,关于如何查看生成反向工程实体类查看SSH框架搭建教程-反向工程章节 Tmenu和AbstractorTmenu是按照数据库表反向工程形 ...
- 039医疗项目-模块四:采购单模块—采购单的创建-----------Dao层,service层,Acion层
我们根据数据库里面的表格:生成对应的Mapper接口文件和...Mapperxml文件: YYCGD:采购单模板表. YYCGD2014:采购单动态生成表,由存储过程生成. YYCGDMX:采购单明细 ...
- 032医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Service层和Action层和调试
我们上一篇文章讲了Dao层代码: 这一篇我们讲解Service层和Action层: Service层: 分为接口和实现类,我们主要看实现类:GysemplServiceImpl package yyc ...
随机推荐
- Oracle 了解 DDL 操作与 REDO 的关系
目录 了解 DDL 操作与 REDO 的关系 DDL是否会产生REDO 通过 10046 trace 来分析create 和drop 如果drop失败,redo的变化 了解 DDL 操作与 REDO ...
- day03_09 编码部分历史及文件编码简介
详细课件:http://www.cnblogs.com/alex3714/articles/5465198.html 字符编码 支持中文的第一张表就是GB2312 1980 gb2312 6700+ ...
- Leetcode 437.路径总和III
路径总和III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). ...
- 防止csrf
//防csrf攻击 $csrf_hash = md5(uniqid(rand(), TRUE)); set_cookie("my_csrf_name", $csrf_hash, 0 ...
- 【bzoj2724】[Violet 6]蒲公英 分块+STL-vector
题目描述 输入 修正一下 l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1 输出 样例输入 6 3 1 2 3 2 1 2 1 5 3 ...
- PHP的发展史,功能与特点
web1.0时代:所有的代码都是在浏览器端执行的静态脚本,用户请求的也都是服务器上事先已经存在的静态网页,用户和服务器之间不能进行任何的交互!(不需要数据库的支持) web2.0时代:用户和服务器之间 ...
- HDU——1874畅通工程续(Dijkstra与SPFA)
畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- 【CCF】地铁修建 改编Dijkstra
[题意] 给定有n个点,m条边的无向图,没有平行边和自环,求从1到n的路径中,最长段的最小值(最短路不再是路径和,而是所有段中的最大值) [AC] #include<iostream> # ...
- django 报错 no such table: auth_user
需要执行 python3 manage.py makemigrations python3 manage.py migrate 参考:http://arrayoverflow.com/question ...
- 关于postman使用上发现的一点问题
之前后台用的java,一直用的postman测试接口数据,之前不管是get.post.delete.put请求都是在param传递的数据,java下面是没问题可以测试的.但是今天自己写Node发现po ...