Java注解开发中使用@Repository 和 @Mapper的区别

Spring注解篇:@Repository详解! 在企业级Java开发中,数据持久化是一个核心问题。Spring框架提供了一套丰富的数据访问抽象,使得开发者可以更加专注于业务逻辑的实现。注解是Spring提供的一种特殊类型的@Component注解,专门用于数据访问层,即DAO(Data Access Object)的组件。本文将深入探讨注解的使用方法、源码解析、实际应用案例以及优缺点分析,帮助开发者更好地理解和运用这一注解。注解是Spring框架中用于标识数据访问层组件的注解。它不仅提供了@Component。 阅读详情

使用注解的方式开发Dao层的时候,常常会混淆这两个注解,不知道怎么添加,这里做个记录。

@Mapper 是 Mybatis 的注解,和 Spring 没有关系,@Repository 是 Spring 的注解,用于声明一个 Bean。(重要)

总结

  1. @Mapper 一定要有,否则 Mybatis 找不到 mapper。
  2. @Repository可有可无,可以消去依赖注入的报错信息。
  3. @MapperScan 可以替代 @Mapper。

@Mapper

使用 Mybatis 有 XML 文件或者注解的两种使用方式,如果是使用 XML 文件的方式,我们需要在配置文件中指定 XML 的位置,这里只研究注解开发的方式。

在 Spring 程序中,Mybatis 需要找到对应的 mapper,在运行时动态生成代理类,实现数据库查询功能,所以我们需要在接口上添加 @Mapper 注解。

@Mapper
public interface UserDao {
	...
}

但是,仅仅使用@Mapper注解,我们会发现,在其他变量中依赖注入,IDEA 会提示错误,但是不影响运行。因为我们没有显式标注这是一个 Bean,IDEA 认为运行的时候会找不到实例注入,所以提示我们错误。如下图,会有红色波浪线。
在这里插入图片描述
尽管这个错误提示并不影响运行,但是看起来很不舒服,所以我们可以在对应的接口上添加 bean 的声明,如下:

@Repository // 也可以使用@Component,效果都是一样的,只是为了声明为bean
@Mapper
public interface UserDao {
	
	@Insert("insert into user(account, password, user_name) " +
            "values(#{user.account}, #{user.password}, #{user.name})")
    int insertUser(@Param("user") User user) throws RuntimeException;
}

@Repository

正如上面说的,@Repository 用于声明 dao 层的 bean,如果我们要真正地使用 @Repository 来进行开发,那是基于代码的开发,简单来说就是手写 JDBC。

和 @Service、@Controller 一样,我们将 @Repository 添加到对应的实现类上,如下:

@Repository
public class UserDaoImpl implements UserDao{
	
	@Override
	public int insertUser(){
		JdbcTemplate template = new JdbcTemplate();
		...
	}
}

其他扫描手段

基于注解的开发也有其他手段帮助 Mybatis 找到 mapper,那就是 @MapperScan 注解,可以在启动类上添加该注解,自动扫描包路径下的所有接口。用这种方法相关接口不用添加任何其他注解。

@SpringBootApplication
@MapperScan("com.scut.thunderlearn.dao")
public class UserEurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserEurekaClientApplication.class, args);
    }
}
ADS基础教程24 - Gerber文件的导入 一、引言二、基本概念1.仿真文件下载2.仿真文件介绍二、导入步骤1.新建workspace2.选择Layout结构3.导入设计4.选择文件类型5.导入文件6.预览文件内容7.铜皮离散问题四、总结选择。通过本文章结束,可以了解ADS中如何将导入Gerber文件,并且对导入的铜皮进行合并。下一步就针对导入的文件进行层叠设置和编辑。END!}}END! 阅读详情

相关推荐

RK3568点不亮EK79007 MIPI屏?别急着改时序,先检查这个初始化命令

本文深入解析RK3568开发板调试EK79007 MIPI屏幕时初始化命令的关键作用,揭示80%的时序问题实际源于命令配置不当。通过典型故障案例,详细拆解初始化命令的调试方法、寄存器映射及系统化排查流程,帮助工程师快速定位和解决屏幕点亮问题。

weixin_33657090的博客 349

@Repository、@Service、@Controller 和 @Component

@Repository、@Service、@Controller 和 @Component 将类标识为Bean Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发。@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。同时,为了让 Spring 能够扫描类

zb402230366的专栏 3964

Windows 11任务管理器隐藏技能:一眼揪出内存泄漏的“元凶”(分页/非分页缓冲池详解)

本文详细介绍了Windows 11任务管理器中隐藏的分页缓冲池和非分页缓冲池功能,帮助用户精准定位内存泄漏问题。通过启用隐藏列、解读数据异常信号,并结合实战案例和高级工具推荐,为开发者和IT运维人员提供了高效的内存问题诊断与解决方案。

weixin_29284885的博客 628

@Repository注解的作用和用法,以及和@Mapper的区别

@Repository注解的作用和用法,以及和@Mapper的区别

fenglin_smile的博客 4万+

ABAQUS应用15——Abaqus软件中边界条件与力学中自由度的关系

核心关系:Abaqus通过约束自由度实现边界条件,自由度类型由单元决定。正确设置步骤:确定模型类型(实体/梁/壳)。识别节点的自由度(平动或转动)。根据实际约束施加对应的自由度限制。验证:通过检查变形模式、反力分布等确认边界条件合理性。正确理解自由度与边界条件的关系,是确保有限元模型准确模拟实际物理行为的关键。

George的博客 1545

Python实战:动态爬取国家地表水水质实时监测数据(附最新代码解析)

本文详细介绍了使用Python动态爬取国家地表水水质实时监测数据的实战方法。针对动态网站数据加载特点,重点解析了如何利用Selenium模拟浏览器操作、结合BeautifulSoup解析数据,并提供了最新的代码实现与常见问题解决方案,帮助开发者高效获取环境监测数据。

app77的博客 280

@Repository 与 @Mapper的区别

今天在用springboot整合mybatis时,mapper接口上用的注解是以前学spring时用的@Repository注解,可一运行,就出现了错误。

qq_44421399的博客 6万+

C#实战:如何用winmm.dll打造毫秒级高精度定时器(附完整代码)

本文详细介绍了在C#中利用winmm.dll实现毫秒级高精度定时器的完整方案。针对.NET内置定时器精度不足的问题,通过调用timeSetEvent等原生API,提供了超越系统时钟中断周期的精准定时能力。文章包含核心原理剖析、完整的封装类代码以及音视频处理、游戏开发等场景下的实战应用与性能调优指南。

ujm5678901的博客 690

注解详解系列 - @Repository:数据访问层组件

在今天的注解详解系列中,我们将探讨注解。是Spring框架中的一个专用注解,用于标记数据访问层(DAO)组件。使用该注解可以让Spring自动检测和管理这些数据访问组件,并提供一致的异常处理机制。注解用于声明一个Spring数据访问层组件,使其成为Spring IoC容器管理的一个bean。// 数据访问方法,例如 CRUD 操作 }// 数据访问方法,例如 CRUD 操作 }// 数据访问方法,例如 CRUD 操作 }Repository;// 数据访问方法,例如 CRUD 操作在这个示例中,

算命de博客 5778

AMBA-CHI协议详解(七)

本节描述该协议包含的支持系统保序需求的机制。

Crazzy_M的博客 1158

《AI应用架构师:解锁AI智能体于经济学研究洞察经济趋势的关键密码》

当经济学家还在为“疫情后的消费复苏曲线”“ChatGPT对就业的长期影响”等非线性问题挠头时,AI应用架构师已经用AI智能体搭建了一个“数字经济沙盘”:里面有会砍价的消费者、会算成本的企业、会调政策的政府,每个智能体像真实角色一样思考决策,甚至能模拟出“政策出台3个月后失业率的微妙变化”。这篇文章将带你从架构师视角拆解:如何用AI智能体破解经济学研究的3大痛点(数据爆炸、非线性复杂、动态演化)?如何设计能“活起来”的经济智能体?如何用智能体模拟出能指导现实的经济趋势?

AI天才研究院 902

Java开发常用的几个注解

Java开发常用的几个注解 Java开发常用的注解有@Mapper @Repository(持久层)、@Service(业务层)、@Controller (控制层)和 @Component(其它),以及@Autowired和@Resource @Mapper 从mybatis3.4.0开始加入了@Mapper注解,添加@Mapper注解的接口生成一个实现类,目的就是为了不再写mapper映...

a754315344的博客 1096

基于STM32、HAL库的MCP4013T-103E/CH 数字电位器驱动程序设计

define MCP4013_I2C_ADDR (0x5F << 1) // HAL库使用7位地址左移1位,或直接使用0xBE/0xBF。#include "i2c.h" // 包含你的I2C初始化相关的头文件,例如由CubeMX生成的 i2c.h。大于127的值会被截断。// MCP4013的读操作:主机发起读取请求,从机返回当前滑片位置的一个字节。// 使用HAL_I2C_Master_Transmit直接发送数据。// 使用HAL_I2C_Master_Receive读取一个字节。

corlin6688的博客 126

Mapper层注解讲解

其实,标签 注解专用的,其他的注解,例如@Insert、@Update、@Delete等等,都可以使用的。注解的值是字符数组,但是真正生效的应该是最后那条SQL语句。注解时,参数只能有一个,可以是一个基本的数据也可以是一个。与接口进行对应的,如果写了两个同名的接口,就会导致。普通的字符串值,只能实现变量的替换功能,实现简单的。完全可以省略不写,也完全可以实现自动注入,但是在。里面取出来的,取出来的值就是方法中形式参数。这个注解,那么映射文件中的标签中可以不用写。层接口上,作用是将接口的一个实现类交给。

上善若泪 6万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Springboot 整合mybatis

文章目录@Mapper和@Repository注解的区别 @Mapper和@Repository注解的区别 在mapper加@mapper或者@repository注解。 这两种注解的区别在于: 1、使用@mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。 2、@repository则需要在Spring中配置扫描包地址,然后生成dao层的bean,之后被注

172

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

模糊知识点

- static

不敢吭声的博客 255

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

@Repository注解和@mapper的区别

职责范围它的职责更广泛,主要是从概念上表示一个数据存储库,通常用于传统的 Spring 数据访问对象(DAO),可能包含更复杂的数据操作逻辑,如处理事务、异常处理等。它更像是一个管理仓库的人员,除了基本的数据存储和检索,还可能处理一些其他的事情,比如检查仓库的状态、协调货物的运输等。@Mapper主要侧重于接口和 SQL 语句的映射,它就像一个翻译官,只是把 Java 代码和 SQL 语句进行转换,让 Java 代码可以直接操作数据库。它的主要任务就是将接口方法翻译成 SQL 语句,以便对数据库进行操作。

2401_85943192的博客 899

@AutoWired和@Resource以及@Repository 与 @Mapper 区别

加粗样式# 系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、二、@Repository 与 @Mapper 区别1.@Repository2. @Mapper总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容

小可爱码农 3178

@Mapper和@Repository的区别

在用Spring Boot项目中整合MyBatis时,mapper接口上用的注解是以前学spring时用的@Repository注解(由于整合了Mybatis,所以@Repository基本不用了)产生了错误。在此总结一下@Repository 与 @Mapper的区别。

Di_Pro_的博客 836

Spring Boot中Stereotype注解详解 @Component @Service @Repository @Controller @RestController 以及 @Mapper

简单理解:Stereotype注解可以看作是“分类标签”。你给一个Java类贴上不同的标签(注解),Spring容器在启动时就会扫描这些标签,并根据标签的含义,自动创建这些类的对象(即Bean),并管理它们的生命周期和依赖关系。核心机制:这一切都基于Spring的组件扫描(Component Scanning)。默认情况下,Spring Boot会扫描主应用类所在包及其所有子包下的类。注解含义层主要用途@Component通用组件任意不属于其他类的通用Bean@Service业务逻辑。

BillKu的博客 1076

@Repository 和 @Mapper区别以及idea报红问题

@Repository 只能标注在 DAO 类上。这是因为该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。

邪神大人 2417

@Repository 和@Mapper的区别

@Mapper是mybatis自身带的注解,有时候使用@Mapper的话,在服务层注入被注释的类的话会会爆红,但是不影响使用 也可以使用@Resource ,也可以消除爆红 @Repository是spring提供的注释,能够将该类注册成Bean。被依赖注入。 但是使用该注解后,在启动类上要加@Mapperscan,来表明MApper类的位置,否则扫描不到 如果是用@Mapper的话,当前类注...

weixin_44607885的博客 8508

@Autowired 和@Resource区别 AND @Component, @Repository, @Service,@Controller,@Mapper的区别使用

Spring 注解 @Autowired 和@Resource 的区别: 5、推荐使用:@Resource注解在字段上,这样就不用写setter方法了,并且这个注解是属于J2EE的,减少了与spring的耦合。这样代码看起就比较优雅。 补充一下:在java中如果属性或者方法的标识符是private的话,是不能直接访问这个属性的,必须通过setter和getter方法才能够访问这个属性。@Autowired作用在字段上也不用写setter方法–底层是通过java的反射机制实现的,两者差别主要是装载顺序

欢迎访问我的博客 821

具体地讲讲@Repository和@Mapper注解的区别

具体地讲讲@Repository和@Mapper注解的区别。@Mapper注解是mybatis的注解,是用来说明这个是一个Mapper接口,然后对应的Mapper.xml文件就是来实现这个Mapper接口的。 @Repository注解是Spring的注解,使用该注解和@Autowired注解,就不会出现爆红的情况了,因为@Repository注解是Spring的注解,会把当前类注册成一个bean了。

L_simian7的博客 626
上一篇: leetcode刷题 - 字符串
Lemonbr
博客等级 码龄9年 2851粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值