一、实验介绍

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. Makefile基础(二)

    上一章:C语言之Makefile基础(一) 上一章的Makefile写的中规中矩,比较繁琐,是为了讲清楚基本概念,其实Makefile有很多灵活的写法,可以写的更简洁,同时减少出错的可能 一个目标依赖 ...

  2. Hive学习笔记(二)

    Hive内部表跟外部表之间的区别 创建外部表 先删除上面创建的表,指定location 此时在hdfs根目录下就有一个hivedata文件夹 上传文本数据到hivedata目录下 查询表中数据 删除上 ...

  3. foy: 轻量级的基于 nodejs 的通用 build 工具

    npm 的 scripts 下写的命令太多就很容易很乱,各种第三方轮子都只能解决一部分问题,总感觉不是很好用,想找个类似 make 的工具只能找到 jake, 可是 jake 的 API 太老,居然很 ...

  4. Just a test

  5. webdriver高级应用- 启动FireFox的同时打开Firebug

    1. 首先本机Firefox浏览器需要安装一下firebug插件,具体怎么安装这里不赘述,网上教程很多. 2. 具体自动化实现的代码如下: #encoding=utf-8 from selenium ...

  6. 大数据学习——akka学习

    架构图 重要类介绍 ActorSystem 在Akka中,ActorSystem是一个重量级的结构,他需要分配多个线程,所以在实际应用中,ActorSystem通常是一个单例对象,我们可以使用这个Ac ...

  7. 知名游戏引擎公司Havok发布免费3D移动游戏引擎“Project Anarchy”

    自EA发布“寒霜”引擎(Frostbite Engine)移动版后,知名游戏引擎公司Havok也发布了免费的3D移动游戏引擎“Project Anarchy”. 据悉,6月底时候,Intel旗下知名游 ...

  8. iOS--------对堆、栈 存储空间的理解

    Objective-C的对象在内存中是以堆的方式分配空间的,并且堆内存是由你释放的,即release 栈由编译器管理自动释放的,在方法中(函数体)定义的变量通常是在栈内,因此如果你的变量要跨函数的话就 ...

  9. [LOJ#525]「LibreOJ β Round #4」多项式

    [LOJ#525]「LibreOJ β Round #4」多项式 试题描述 给定一个正整数 k,你需要寻找一个系数均为 0 到 k−1 之间的非零多项式 f(x),满足对于任意整数 x 均有 f(x) ...

  10. BZOJ4517 [Sdoi2016]排列计数 【组合数 + dp】

    题目 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条件的 ...