SSM项目实战-service实现

news2025/1/9 2:39:46

1、SysUserService.java

package com.atguigu.schedule.service;

import com.atguigu.schedule.pojo.SysUser;

public interface SysUserService {
    SysUser getSysUser(SysUser sysUser);
}

2、SysUserServiceImpl.java

package com.atguigu.schedule.service.impl;
import com.atguigu.schedule.mapper.SysUserMapper;
import com.atguigu.schedule.pojo.SysUser;
import com.atguigu.schedule.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class SysUserServiceImpl implements SysUserService {

    @Autowired
    private SysUserMapper sysUserMapper;

    @Override
    @Transactional(readOnly = true)
    public SysUser getSysUser(SysUser sysUser) {
        return sysUserMapper.getSysUser(sysUser);
    }
}

3、ScheduleQueryVo.java 

package com.atguigu.schedule.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//日程的查询条件封装成一个java对象,我们将这样的对象称之为查询条件对象(Query Object)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ScheduleQueryVo {
    private Integer uid;
    private Integer pageNum;   //页码:显示第几页
    private Integer pageSize = 3;  //页大小
}

3、ScheduleService.java

package com.atguigu.schedule.service;
import com.atguigu.schedule.pojo.Schedule;
import com.atguigu.schedule.vo.ScheduleQueryVo;
import com.github.pagehelper.PageInfo;
public interface ScheduleService {
    PageInfo<Schedule> getSchedulePageInfo(ScheduleQueryVo queryVo);
}

4、ScheduleServiceImpl.java

package com.atguigu.schedule.service.impl;
import com.atguigu.schedule.mapper.ScheduleMapper;
import com.atguigu.schedule.pojo.Schedule;
import com.atguigu.schedule.service.ScheduleService;
import com.atguigu.schedule.vo.ScheduleQueryVo;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional
public class ScheduleServiceImpl implements ScheduleService {

    @Autowired
    private ScheduleMapper scheduleMapper;

    @Override
    @Transactional
    public PageInfo<Schedule> getSchedulePageInfo(ScheduleQueryVo queryVo) {
        PageHelper.startPage(queryVo.getPageNum(), queryVo.getPageSize());
        List<Schedule> scheduleList = scheduleMapper.getScheduleList(queryVo.getUid());
        return new PageInfo<>(scheduleList);
    }
}

 

5、@Autowired不建议在字段上使用的原因有以下几点:

  1. 无法用于final修饰的变量:在基于字段的依赖注入中,如果字段是final类型,那么这个字段的值在类实例化的过程中就需要被初始化。然而,@Autowired注解无法在初始化时注入final类型的变量,因此需要使用基于构造函数的依赖注入。
  2. 掩饰单一职责的设计思想:如果一个类使用了过多的@Autowired注解,那么这个类的构造函数参数可能会变得很庞大。这可能会违反单一职责原则,使得这个类承担了过多的职责。使用基于构造函数的依赖注入可以避免这个问题。
  3. 可能导致循环依赖:当两个类互相注入时,就可能形成一个循环依赖。例如,类A注入了类B的实例,而类B又注入了类A的实例,这样就会形成一个无法解析的循环依赖。为了避免这种情况,建议使用基于构造函数的依赖注入。
  4. 无法设置final或static变量:基于字段的依赖注入无法将注入的对象设置为final或static变量。这是因为final类型的变量需要在类实例化的过程中进行初始化,而基于字段的依赖注入无法在初始化时注入final类型的变量。同时,由于字段注入需要在类实例化之后才能进行,因此也无法注入static类型的变量。

总之,虽然@Autowired注解可以方便地进行依赖注入,但是在使用时需要注意其限制和潜在问题。在需要注入final或static类型的变量时,或者当一个类需要承担过多的职责时,建议使用基于构造函数的依赖注入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1275215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7nm项目之顶层规划——01数据导入

1.创建workspace 创建workspace后&#xff0c;在其目录下产生。 CORTEXA53.json文件是将有默认配置的文件master.json、有library的.config.json文件、tunes下CORTEXA53.tunes.json文件合并 注&#xff1a;tunes下的CORTEXA53.tunes.json文件可以覆盖一些master.json的设置…

Vue+Element-ui实例_在form中动态校验tag标签

1.开发需求 在日常开发中&#xff0c;我们会遇到form表单的动态添加和校验&#xff0c;当我们需要在动态添加的内容中再次动态使用输入框的时候&#xff0c;就会变得很繁琐&#xff0c;我在网上找了很多案例&#xff0c;没有符合自己需求的内容&#xff0c;只好闲暇时间自己搞…

Unity UGUI控件之Horizontal Layout Group

Horizontal Layout Group是Unity中的UGUI控件&#xff0c;用于在水平方向上对子对象进行布局。 主要有一下作用&#xff1a; 水平布局&#xff1a;Horizontal Layout Group将子对象按照水平方向进行布局&#xff0c;可以控制子对象的排列顺序和间距。自动调整尺寸&#xff1a…

MOS管的静电击穿问题

MOS管输入电阻很高&#xff0c;为什么一遇到静电就不行了&#xff1f; 静电击穿&#xff1a;由于静电的积累导致电压超过了原本MOS的绝缘能力&#xff0c;导致电流突然增大的现象。 MOS管基础知识了解&#xff1a; G极(gate)—栅极&#xff0c;不用说比较好认 S极(source)—源…

Mybatis相关API(Sqlsession和sqlsessionFactroy)

代码 private static SqlSessionFactory sqlSessionFactory;static { ​try { // 获得核心配置文件String resource "mybits-config.xml"; // 加载核心配置文件InputStream inputStream Resources.getResourceAsStream(resource…

一种excel多线程并发写sheet的方案

一、背景 有一次项目的需求要求导出excel&#xff0c;并且将不同的数据分别写到不同的sheet中。 二、 方案概述 首先一开始使用easyexcel去导出excel&#xff0c;结果发现导出时间需要3秒左右。于是想着能不能缩短excel导出时间&#xff0c;于是第一次尝试使用异步线程去查询数…

weblogic任意文件上传漏洞(CVE-2018-2894)

任务一&#xff1a; 复现环境中的漏洞 任务二&#xff1a; 上传webshell或者反弹shell&#xff0c;并执行whoami。 任务一&#xff1a; 1.环境搭建&#xff0c;发现需要密码&#xff0c;所以我们去日志里面查看管理员密码。 2.了解一下这个平台&#xff0c;然后进行一些基本配…

数据结构——图解链表OJ题目

学完了单链表之后&#xff0c;我们对其基本结构已经有了一定的了解&#xff0c;接下来我们通过一些题目强化对链表的理解&#xff0c;同时学习一些面试笔试题目的新思路以及加强对数据结构单链表的掌握。 目录 题目一.876. 链表的中间结点 - 力扣&#xff08;LeetCode&#x…

金蝶云星空单据界面新增状态,操作明细行的新增按钮时判断表头基础资料是否必录

文章目录 金蝶云星空单据界面新增状态&#xff0c;操作明细行的新增按钮时判断表头基础资料是否必录BOS配置代码实现 金蝶云星空单据界面新增状态&#xff0c;操作明细行的新增按钮时判断表头基础资料是否必录 BOS配置 四种方式都不生效。 代码实现 表单插件的BeforeDoOpera…

最短路算法

文章目录 最短路总览朴素Dijkstra - 稠密图 - O ( n 2 ) O(n^2) O(n2)具体思路时间复杂度分析使用场景AcWing 849. Dijkstra求最短路 ICODE 堆优化 D i j k s t r a Dijkstra Dijkstra 算法 - 稀疏图 - O ( m l o g n ) O(mlogn) O(mlogn)具体思路和时间复杂度分析使用场景A…

九章量子计算机:引领量子计算的新篇章

九章量子计算机:引领量子计算的新篇章 一、引言 随着科技的飞速发展,量子计算已成为全球科研领域的前沿议题。九章量子计算机作为中国自主研发的量子计算机,具有划时代的意义。本文将深入探讨九章量子计算机的原理、技术特点、应用前景等方面,带领读者领略量子计算的魅力…

11.28~11.29基本二叉树的性质、定义、复习;排序算法;堆

完全二叉树&#xff08;Complete Binary Tree&#xff09;是一种特殊的二叉树结构&#xff0c;它具有以下特点&#xff1a; 所有的叶子节点都集中在树的最后两层&#xff1b;最后一层的叶子节点都靠左排列&#xff1b;除了最后一层&#xff0c;其他层的节点数都达到最大值。 …

短剧行业@2023:狂飙、刹车与新生

【潮汐商业评论/原创】 “豪门复仇”“先婚后爱”“重生”“穿越”&#xff0c;Ashley几乎每次回家路过保安亭&#xff0c;都能看到大叔在看这类上头小短剧&#xff0c;就连有时候在公司&#xff0c;也能听到保洁阿姨在看类似的视频。 久而久之&#xff0c;从好奇到“入坑&am…

利用ElementUI配置商品的规格参数

商品有不同的规格组合&#xff0c;自动生成对应规格的所有组合&#xff0c;并设置该规格的图片、价格、库存数据。 <template><div class"sku-list"><template v-if"!disabled"><div class"sku-list-head"><el-but…

Zigbee—基于Z-STACK组网

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;チノカテ—ヨルシカ 0:46━━━━━━️&#x1f49f;──────── 4:08 &#x1f504; ◀️ ⏸ ▶️ ☰ &a…

nginx配置反向代理及负载均衡

目录 1.前端发送的请求&#xff0c;是如何请求到后端服务的1.nginx 反向代理的好处&#xff1a;2.nginx 反向代理的配置方式&#xff1a;3. nginx 负载均衡的配置方式 1.前端发送的请求&#xff0c;是如何请求到后端服务的 1.nginx 反向代理的好处&#xff1a; 提高访问速度 因…

如何使用 NFTScan NFT API 在 Starknet 网络上开发 Web3 应用

Starknet 是由以色列软件公司 StarkWare 开发的免许可的第 2 层网络。Starknet 作为以太坊上的 ZK Rollup 运行&#xff0c;帮助 dApp 使用 STARK 证明以更低的交易成本实现更大的计算规模。该网络允许智能合约与区块链上部署的其他合约进行交互&#xff0c;从而提高协议之间的…

大数据Doris(三十一):Doris简单查询

文章目录 Doris简单查询 一、简单查询 二、​​​​​​​Join

基于Springboot的在线问卷调查系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的在线问卷调查系统(有报告)。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring…

golang WaitGroup的使用与底层实现

使用的go版本为 go1.21.2 首先我们写一个简单的WaitGroup的使用代码 package mainimport ("fmt""sync" )func main() {var wg sync.WaitGroupwg.Add(1)go func() {defer wg.Done()fmt.Println("xiaochuan")}()wg.Wait() }WaitGroup的基本使用场…