iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringDao层@Repository与@Mapper的使用
  • 457
分享到

SpringDao层@Repository与@Mapper的使用

2024-04-02 19:04:59 457人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录springDao层@Repository与@Mapper1、@Mapper2、@Repository3、其他扫描手段4、小结@Mapper和@Repository的区别1、相同

Spring Dao层@Repository与@Mapper

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

1、@Mapper

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

使用 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;
}

2、@Repository

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

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

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

3、其他扫描手段

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

@SpringBootApplication
@MapperScan("com.scut.thunderlearn.dao")
public class UserEurekaClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserEurekaClientApplication.class, args);
    }
}

使用这种方法,接口上不用添加任何注解。

4、小结

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

@Mapper和@Repository的区别

1、相同点

@Mapper和@Repository都是作用在dao层接口,使得其生成代理对象bean,交给spring 容器管理

对于mybatis来说,都可以不用写mapper.xml文件

2、不同点

  • @Mapper不需要配置扫描地址,可以单独使用,如果有多个mapper文件的话,可以在项目启动类中加入@MapperScan(“mapper文件所在包”),这样就不需要每个mapper文件都加@Mapper注解了
  • @Repository不可以单独使用,否则会报如下错误

 Field userMapper in com.liu.service.UserServiceImpl required a bean of type 'com.liu.mapper.UserMapper' that could not be found.

找不到bean,这是因为项目启动的时候没有去扫描使用@Repository注解的文件,所以使用@Repository需要配置扫描地址

但在idea中,使用@Repository可以消除在业务层中注入mapper对象时的错误,如下图所示

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: SpringDao层@Repository与@Mapper的使用

本文链接: https://www.lsjlt.com/news/140628.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringDao层@Repository与@Mapper的使用
    目录SpringDao层@Repository与@Mapper1、@Mapper2、@Repository3、其他扫描手段4、小结@Mapper和@Repository的区别1、相同...
    99+
    2024-04-02
  • Spring Dao层@Repository与@Mapper怎么用
    这篇文章将为大家详细讲解有关Spring Dao层@Repository与@Mapper怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Spring Dao层@Repository与@Map...
    99+
    2023-06-29
  • 浅谈springboot@Repository与@Mapper的区别
    目录1、@Repository2、@Mapper3、区别相同点:不同点:4、解决使用@mapper接口时,注入mapper爆红问题今天在用springboot整合mybatis时,m...
    99+
    2024-04-02
  • springboot @Repository与@Mapper的区别是什么
    本篇内容介绍了“springboot @Repository与@Mapper的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2023-06-29
  • controller层,service层,mapper层,entity层的作用与联系。
      一. controller层 controller层是用来接受前台数据和返回页面请求信息的,Controller层是不允许直接操作数据库的!它就像一个服务员,哪桌客人需要点菜了,就喊一声服务员!对应的,外界需要完成什么样的业务,就...
    99+
    2023-09-11
    java 前端 spring
  • @Repository注解的作用和用法,以及和@Mapper的区别
    1、@Repository的作用 @Repository是属于Spring的注解。它用来标注访问层的类(Dao层),它表示一个仓库,主要用于封装对于数据库的访问。其实现方式与@Component注解相同,只是为了明确类的作用而设立。 即@R...
    99+
    2023-08-17
    java spring boot spring mybatis
  • 如何使用Spring Data repository进行数据层的访问
    本篇内容主要讲解“如何使用Spring Data repository进行数据层的访问”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Spring Data&...
    99+
    2023-07-02
  • Mybatis-Plus实体类注解方法与mapper层和service层的CRUD方法
    目录1 注解1.1 @TableName1.2 @TableId1.3 @TableField1.4 @TableLogic2 mapper层的CRUD方法2.1 增(insert)...
    99+
    2024-04-02
  • mapper的使用
    一、通用mapper概述 它是mybatis的一个插件,单表查询的时候,使用通用mapper会非常的方便。极大地方便开发人员,可以按照需要选择通用方法,还可以自定义通用方法。不过它也有一个非常大的局限性:只支持单表操作,不支持多表查询。 ...
    99+
    2023-10-18
    mybatis java mysql Powered by 金山文档
  • @MapperScan注解与@Mapper注解的使用
    目录@MapperScan注解与@Mapper注解使用MapperScan注解和@Mapper的区别@MapperScan注解与@Mapper注解使用 @Mapper一般对应一个接口...
    99+
    2024-04-02
  • 详解使用Spring Data repository进行数据层的访问问题
    目录使用Spring Data repository进行数据层的访问核心概念查询方法定义查询方法CREATEUSE_DECLARED_QUERYCREATE_IF_NOT_FOUND...
    99+
    2024-04-02
  • springBoot controller,service,dao,mapper,model层的作用说明
    目录零、业务逻辑一、Dao(Data Access Object):数据存储对象二、Service:服务三、Controller:控制器四、model:模型五、View层六、它们之间...
    99+
    2024-04-02
  • 基于JPA的Repository使用详解
    目录Spring Data JPARepositoryCrudRepositoryPagingAndSortingRepositoryJpaRepositoryJpaSpecific...
    99+
    2024-04-02
  • mybatis的mapper怎么使用
    MyBatis的mapper是用于映射数据库操作的接口,通过这个接口可以方便地调用SQL语句进行数据库的增删改查操作。使用步骤如下:...
    99+
    2023-09-29
    mybatis
  • css层叠与z-index的使用示例
    这篇文章主要介绍了css层叠与z-index的使用示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。层叠与层叠等级HTML 元素是一个三维的概念,除了水平和垂直方向外,还会在...
    99+
    2023-06-08
  • mybatis注解之@Mapper和@MapperScan的使用
    目录mybatis注解之@Mapper和@MapperScan方式一:使用@Mapper注解方式二:使用@MapperScan注解@MapperScan和@Mapper区别及理解作用...
    99+
    2024-04-02
  • CSS中层叠与继承的使用方法
    本篇内容介绍了“CSS中层叠与继承的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!CSS技术理论:...
    99+
    2024-04-02
  • Mybatis中mapper的map方法怎么使用
    在MyBatis中,Mapper接口中的map方法是用来执行SQL语句并将结果映射到Java对象的。首先,在Mapper接口中定义一...
    99+
    2023-10-12
    Mybatis
  • Go select使用与底层原理讲解
    目录1. select的使用2. 底层原理3. 数据结构4. 几种常见 casecase 1case2case3case41. select的使用 select 是 Go 提供的 I...
    99+
    2024-04-02
  • mysql表分区的使用与底层原理详解
    目录什么是分区表 分区表应用场景 分区表的限制 分区类型 分区表的使用 1、范围分区 2、列表分区(list分区) 3、列分区 4、hash分区 5、秘钥分区(key分区) 6、子分...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作