SSM实现简单的CRUD之Service层
来源:互联网 发布:用手机淘宝搜白夜追凶 编辑:程序博客网 时间:2024/06/05 21:10
前言
开始Service层的编码之前,我们首先需要进行Dao层编码之后的思考:在Dao层我们只完成了针对表的相关操作包括写了接口方法和映射文件中的sql语句,并没有编写逻辑的代码,例如对多个Dao层方法的拼接,当我们用户成功秒杀商品时我们需要进行商品的减库存操作和增加用户明细等等,这些逻辑我们都需要在Service层完成。但是这个CRUD并不需要什么很难的逻辑只是一个简单的增删查改,所以在这个CRUD的Service层会很简单,接下来我们便进行Service层代码的编写。
Service接口设计
在cn.hfbin.crud包下创建一个service包用于存放我们的Service
创建EmployeeService类,里面的方法应该是按”使用者”(程序员)的角度去设计,EmployeeService.java,代码如下:
package cn.hfbin.crud.service;import cn.hfbin.crud.bean.Employee;import cn.hfbin.crud.bean.EmployeeExample;import cn.hfbin.crud.bean.EmployeeExample.Criteria;import cn.hfbin.crud.dao.EmployeeMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class EmployeeService { @Autowired EmployeeMapper employeeMapper; /** * 查询所有员工 * @return */ public List<Employee> getAll() { // TODO Auto-generated method stub return employeeMapper.selectByExampleWithDept(null); } /** * 员工保存 * @param employee * */ public void saveEmp(Employee employee) { // TODO Auto-generated method stub employeeMapper.insertSelective(employee); } /** * 检验用户名是否可用 * * @param empName * @return true:代表当前姓名可用 fasle:不可用 */ public boolean checkUser(String empName) { // TODO Auto-generated method stub EmployeeExample example = new EmployeeExample(); //这个我相信学过Hibernate 的同学都知道这个用法 不难 你可以理解为在where 加入条件 Criteria criteria = example.createCriteria(); //andEmpNameEqualTo根据词意来理解这个相当于 传入的这个empName与数据库的empName进行对比 不存在返回 0 ,存在返回其他 criteria.andEmpNameEqualTo(empName); long count = employeeMapper.countByExample(example); return count == 0; } /** * 按照员工id查询员工 * @param id * @return */ public Employee getEmp(Integer id) { // TODO Auto-generated method stub Employee employee = employeeMapper.selectByPrimaryKey(id); return employee; } /** * 员工更新 * @param employee */ public void updateEmp(Employee employee) { // TODO Auto-generated method stub employeeMapper.updateByPrimaryKeySelective(employee); } /** * 员工删除 * @param id */ public void deleteEmp(Integer id) { // TODO Auto-generated method stub employeeMapper.deleteByPrimaryKey(id); } /** * 批量删除员工 * @param ids */ public void deleteBatch(List<Integer> ids) { // TODO Auto-generated method stub EmployeeExample example = new EmployeeExample(); Criteria criteria = example.createCriteria(); //delete from xxx where emp_id in(1,2,3) criteria.andEmpIdIn(ids); employeeMapper.deleteByExample(example); }}
在这个EmployeeService.java 类做一个说明上面我们用到了EmployeeExample下面对xxxExample做一下说明:
mybatis的逆向工程中会生成实例及实例对应的example,example用于添加条件,相当where后面的部分
xxxExample example = new xxxExample();Criteria criteria = new example.createCriteria();
xxxExample 方法说明:
example.setOrderByClause(“字段名 ASC”); 添加升序排列条件,DESC为降序example.setDistinct(false) 去除重复,boolean型,true为选择不重复的记录。criteria.andXxxIsNull 添加字段xxx为null的条件criteria.andXxxIsNotNull 添加字段xxx不为null的条件criteria.andXxxEqualTo(value) 添加xxx字段等于value条件criteria.andXxxNotEqualTo(value) 添加xxx字段不等于value条件criteria.andXxxGreaterThan(value) 添加xxx字段大于value条件criteria.andXxxGreaterThanOrEqualTo(value) 添加xxx字段大于等于value条件criteria.andXxxLessThan(value) 添加xxx字段小于value条件criteria.andXxxLessThanOrEqualTo(value) 添加xxx字段小于等于value条件criteria.andXxxIn(List<?>) 添加xxx字段值在List<?>条件criteria.andXxxNotIn(List<?>) 添加xxx字段值不在List<?>条件criteria.andXxxLike(“%”+value+”%”) 添加xxx字段值为value的模糊查询条件criteria.andXxxNotLike(“%”+value+”%”) 添加xxx字段值不为value的模糊查询条件criteria.andXxxBetween(value1,value2) 添加xxx字段值在value1和value2之间条件criteria.andXxxNotBetween(value1,value2) 添加xxx字段值不在value1和value2之间条件
以EmployeeService.java 里面用到的举例
EmployeeExample example = new EmployeeExample();Criteria criteria = example.createCriteria();criteria.andEmpNameEqualTo(empName);long count = employeeMapper.countByExample(example);
相当于:
select * from tbl_emp where emp_name= 'hfbin'
DepartmentService.java,代码如下:
package cn.hfbin.crud.service;import cn.hfbin.crud.bean.Department;import cn.hfbin.crud.dao.DepartmentMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class DepartmentService { @Autowired private DepartmentMapper departmentMapper; //获取所有部门 public List<Department> getDepts() { // TODO Auto-generated method stub List<Department> list = departmentMapper.selectByExample(null); return list; }}
测试Service
在这我只抽取一两个进行测试其它测试需要你们自己动手了
package cn.hfbin.crud.test;import cn.hfbin.crud.service.EmployeeService;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:applicationContext.xml"})public class ServicceTest { @Autowired EmployeeService employeeService; /** * 测试用户名是否可用 * 查询id为4416的信息 */ @Test public void text01(){ System.out.println("返回true或false----"+employeeService.checkUser("hfbin")); System.out.println("返回id为4416的数据"+employeeService.getEmp(4416)); }}
结果如下图:
好到这service层到此结束!!! 有没有发现很简单
下一章进行Web层的开发
SSM整合 http://blog.csdn.net/qq_33524158/article/details/78360268
MyBatis-逆向工程讲解 http://blog.csdn.net/qq_33524158/article/details/78442664
SSM实现简单的CRUD之DAO层 http://blog.csdn.net/qq_33524158/article/details/78442771
SSM实现简单的CRUD之Service层 http://blog.csdn.net/qq_33524158/article/details/78449897
SSM实现简单的CRUD之Web层http://blog.csdn.net/qq_33524158/article/details/78462932
项目源码地址:https://github.com/hfbin/SSM-crud
- SSM实现简单的CRUD之Service层
- SSM实现简单的CRUD之DAO层
- SSM实现简单的CRUD之Web层
- SSM实现简单的CRUD技术分析
- SSM之Service层基于注解的声明式事物
- 简单的service成处理CRUD
- Hibernate实现简单的CRUD
- [SSM]springmvc 中dao层和service层的区别
- node.js开发之使用mongoose实现简单的CRUD
- ssm框架-用户界面对用户简单的crud
- ssm框架的搭建实现CRUD的操作
- Servlet中调用ssm的service层的方法
- ssm框架创建简单的DVD管理系统(五)页面的实现同时完成controller层
- 安卓开发-数据库dao层的简单CRUD
- MyBatis的注解实现简单的CRUD
- Jorm实现简单的数据库CRUD操作
- php实现简单的CRUD操作
- greenDAO学习心得,实现简单的CRUD
- LeetCode [70. Climbing Stairs]
- Spring Boot (3) Jap使用
- 圆形进度条+二维码扫描+自定义组合控件标题栏+自定义矩形view+接口回调方法
- class文件的加载、初始化、实例化
- java 监听器
- SSM实现简单的CRUD之Service层
- im2col的原理和实现
- css的学习
- 有关dos的一些基本命令
- UVA
- sdnu1080.tan2x
- 自学:字符串的操作
- 搜索引擎选择: Elasticsearch与Solr
- javaOO(基础图片(类的高级概念)