概述
目录
用户的业务层接口
用户的业务层实现类
用户的持久层接口
用户的控制器(表现层)
用户的业务层接口
Service层的作用
用途:Service层主要负责业务模块的逻辑应用设计
1.封装的具体业务实现方法,来提高业务复用性
2.负责将参与本次业务实现的Dao层中事务进行管理
package com.example.demo.service;
import com.example.demo.bean.User;
import java.util.List;
/**
* 用户的业务层接口
* @author yyh
*/
public interface IUserService {
/**
* 查询所有用户
* @return
*/
List<User> findAllUser();
}
用户的业务层实现类
业务实现:具体要调用到已经定义的DAO接口,封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性,程序显得简洁。
不过其实有一个很有疑问的点就是Service层是不是可有可无,其实作为我个人观点来说的话,小型项目,业务逻辑不复杂的情况下,不用Service层其实并没有什么关系,毕竟Dao层实现了和数据库的交互,Controller层则实现了与前端的交互,这样已经基本打通了前后端,但是遇到大型项目的前提下,还是需要Service层去进行逻辑处理的,确实是需要分情况而言。再退一步想,毕竟这是N多前辈一直延用至今的模式,如果真的没必要存在,那么早就被淘汰了。但是就我个人对Service层的理解:我觉得Service层最大的作用在于规范了代码的开发,实现了业务层与持久层的隔离开发,controller、service、dao每一层都应该有它的边界,来达到解耦的目的,方便代码的复用和扩展。不过我觉得,随着我工作经验和项目经验的累积,我对于MVC的架构分层,以后应该会有进一步的提升,到时候我会继续更文谈谈更深层次的理解。
package com.example.demo.service.impl;
import com.example.demo.bean.User;
import com.example.demo.dao.IUserDao;
import com.example.demo.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 用户的业务层实现类
* @author yyh
*/
@Service("userService")
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao userDao;
@Override
public List<User> findAllUser() {
return userDao.findAll();
}
}
用户的持久层接口
持久层:DAO层(Data Access Object)即数据访问对象(=Mapper层)
用途:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在该层。
- 设计DAO的接口
- 在Spring的配置文件中定义此接口的实现类
- 在模块中调用这个接口来进行数据业务的处理
- DAO层的数据源配置,以及有关的数据库连接的参数都在Spring的配置文件中进行配置。
- 现在用mybatis逆向工程生成的mapper层,其实就是dao层。对数据库进行数据持久化操作,它的方法语句是直接针对数据库操作的,而service层是针对我们controller,也就是针对我们使用者。service的impl是把mapper和service进行整合的文件。
package com.example.demo.dao;
import com.example.demo.bean.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 用户的持久层接口
* @author yyh
*
* JpaRepository<User,Long>:
* 两个泛型是指 1、你要操作那个类 2、你的实体类主键的数据类型
*
* @Repository 没有持久层,持久层是继承的,所以加此注解即可
*/
@Repository("userDao")
public interface IUserDao extends JpaRepository<User,Long> {
/**
* 查询所有用户
* 如果用的是spring data jpa,然后也不想写这些方法,
* 这个时候我们可以选择,让spring data jpa来帮我们实现,
* 我们可以继承 JpaRepository<User,Long>
* @return
*/
//public List<User> findAll();
}
用户的控制器(表现层)
表现层:Controller层
用途:Controller层主要负责具体的业务模块流程的控制
- 在该层中需要调用Service层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件中进行的,针对具体业务流程会有不同的控制器。
- controller通过接收前端传过来的参数进行业务操作,在返回一个指定的路径或者数据表。
- 在具体设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,可使得程序结构清晰,大大减少代码量。
package com.example.demo.web.controller;
import com.example.demo.bean.User;
import com.example.demo.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 用户的控制器(表现层)
* @author yyh
*/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
//http://localhost:8080/user/findAll
@RequestMapping("/findAll")
public List<User> findAllUser(){
return userService.findAllUser();//业务层调用持久层去查询
}
}
最后
以上就是怕孤独大树为你收集整理的11、springboot整合spring-data-jpa案例:写业务层、持久层、表现层(控制器)用户的业务层接口用户的业务层实现类 用户的持久层接口用户的控制器(表现层)的全部内容,希望文章能够帮你解决11、springboot整合spring-data-jpa案例:写业务层、持久层、表现层(控制器)用户的业务层接口用户的业务层实现类 用户的持久层接口用户的控制器(表现层)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复