一、实验介绍

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 层实现的更多相关文章

  1. java中Action层、Service层和Dao层的功能区分

    Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO只 ...

  2. DAO层,Service层,Controller层、View层 的分工合作

    DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口 ...

  3. spring aop对service层日志和异常的处理

    1.aop是什么 AOP是Aspect Oriented Programming的缩写,意思是面向切面编程,与OOP(Object Oriented Programming)面向对象编程对等,都是一种 ...

  4. 谈谈service层在mvc框架中的意义和职责

    mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计, ...

  5. 浅谈Service层为何要有接口

    被人随意问了一句,为何每个service层都要写一个接口呢,多麻烦~虽然想说点什么,但是又不知道从何说起,只好从新整理一下思绪. 情景1:在开源框架中有很多这种情况,就是某个功能支持用户自定义扩展.说 ...

  6. 【Java EE 学习 24 下】【注解在数据库开发中的使用】【反射+注解+动态代理在事务中的应用service层】

    一.使用注解可以解决JavaBean和数据库中表名不一致.字段名不一致.字段数量不一致的问题. 1.Sun公司给jdbc提供的注解 @Table.@Column.@Id.@OneToMany.@One ...

  7. [转]DAO层,Service层,Controller层、View层

    来自:http://jonsion.javaeye.com/blog/592335 DAO层 DAO 层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DA ...

  8. 搭建DAO层和Service层代码

    第一部分建立实体和映射文件 1 通过数据库生成的实体,此步骤跳过,关于如何查看生成反向工程实体类查看SSH框架搭建教程-反向工程章节 Tmenu和AbstractorTmenu是按照数据库表反向工程形 ...

  9. 039医疗项目-模块四:采购单模块—采购单的创建-----------Dao层,service层,Acion层

    我们根据数据库里面的表格:生成对应的Mapper接口文件和...Mapperxml文件: YYCGD:采购单模板表. YYCGD2014:采购单动态生成表,由存储过程生成. YYCGDMX:采购单明细 ...

  10. 032医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Service层和Action层和调试

    我们上一篇文章讲了Dao层代码: 这一篇我们讲解Service层和Action层: Service层: 分为接口和实现类,我们主要看实现类:GysemplServiceImpl package yyc ...

随机推荐

  1. Oracle 了解 DDL 操作与 REDO 的关系

    目录 了解 DDL 操作与 REDO 的关系 DDL是否会产生REDO 通过 10046 trace 来分析create 和drop 如果drop失败,redo的变化 了解 DDL 操作与 REDO ...

  2. day03_09 编码部分历史及文件编码简介

    详细课件:http://www.cnblogs.com/alex3714/articles/5465198.html 字符编码 支持中文的第一张表就是GB2312 1980 gb2312 6700+ ...

  3. Leetcode 437.路径总和III

    路径总和III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). ...

  4. 防止csrf

    //防csrf攻击 $csrf_hash = md5(uniqid(rand(), TRUE)); set_cookie("my_csrf_name", $csrf_hash, 0 ...

  5. 【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 ...

  6. PHP的发展史,功能与特点

    web1.0时代:所有的代码都是在浏览器端执行的静态脚本,用户请求的也都是服务器上事先已经存在的静态网页,用户和服务器之间不能进行任何的交互!(不需要数据库的支持) web2.0时代:用户和服务器之间 ...

  7. HDU——1874畅通工程续(Dijkstra与SPFA)

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  8. 【CCF】地铁修建 改编Dijkstra

    [题意] 给定有n个点,m条边的无向图,没有平行边和自环,求从1到n的路径中,最长段的最小值(最短路不再是路径和,而是所有段中的最大值) [AC] #include<iostream> # ...

  9. django 报错 no such table: auth_user

    需要执行 python3 manage.py makemigrations python3 manage.py migrate 参考:http://arrayoverflow.com/question ...

  10. 关于postman使用上发现的一点问题

    之前后台用的java,一直用的postman测试接口数据,之前不管是get.post.delete.put请求都是在param传递的数据,java下面是没问题可以测试的.但是今天自己写Node发现po ...