spring中dao层注解,spring dao层

  spring中dao层注解,spring dao层

  00-1010 @ Repository与@Mapper1、@Mapper2、@Repository3、其他扫描方式4、Summary @Mapper与@Repository 1、相似点2、不同点

  00-1010使用注释开发Dao层时,这两种注释经常混淆。不知道怎么加。这里有一张唱片。

  

目录

@Mapper是Mybatis的注释,与春天无关。@Repository是Spring的注释,用来声明一个Bean。(重要)

 

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

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

  @Mapper公共接口userdao {.}但是,只使用@ mapper注释,我们会发现IDEA如果依赖于在其他变量中注入,会提示错误,但不会影响操作(亲测~)。因为我们没有显式地将它标记为Bean,所以IDEA认为在运行时不会找到实例注入,所以它会提示我们一个错误。如下图,会有红色波浪线。

  虽然这个错误提示不影响操作,但是看起来很不舒服,所以我们可以在相应的界面上添加bean的声明如下:

  @Repository //也可以使用@Component。效果是一样的,只是声明为bean @ mapper公共接口userdao { @ insert( insert into User(account,password,User _ name) values(# { User . account },#{user.password},# { User . name }))int insert User(@ Param( User )User User)抛出RuntimeException}

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

  像@Service和@Controller一样,我们将@Repository添加到相应的实现类中,如下所示:

  @Repositorypublic类UserDaoImpl实现UserDao { @ override public int insertUser(){ JDBC template template=new JDBC template();}}

  00-1010基于批注的开发还有其他手段可以帮助Mybatis找到mapper,那就是@MapperScan批注,可以添加到startup类中自动扫描包路径下的所有接口。

  @ spring boot application @ mapper scan( com . scut . thunder learn . Dao )public类usererekclientapplication { public static void main(String[]args){ spring application . run(usererekclientapplication . class,args);}}使用这种方法,不需要在界面上添加任何注释。

  

Spring Dao层@Repository与@Mapper

@Mapper:肯定有,不然Mybatis找不到Mapper。@Repository:可选,可以剔除依赖注入的错误信息。@MapperScan:可以代替@Mapper。

 

  

1、@Mapper

 

  

2、@Repository

@Mapper和@Repository是dao层的接口,使其生成代理对象bean,由spring容器管理。

 

  对于mybatis,您不必编写mapper.xml文件。

  

3、其他扫描手段

@Mapper不需要配置扫描地址,可以单独使用。如果有多个映射器文件,可以在项目启动类中添加@Mapper scan(“映射器文件所在的包”),这样就不需要为每个映射器文件添加@Mapper批注。@Repository不能单独使用。否则,将报告以下错误:找不到com . Liu . service . userserviceimpl中的字段Usermapper需要“com.liu.mapper.Usermapper”类型的bean。

 

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

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

  以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • spring编程式事务处理,spring编程事务
  • spring编程式事务处理,spring编程事务,详解Spring学习之编程式事务管理
  • spring的核心功能模块有几个,列举一些重要的spring模块
  • spring的核心功能模块有几个,列举一些重要的spring模块,七个Spring核心模块详解
  • spring注解和springmvc的注解,SpringMVC常用注解
  • spring注解和springmvc的注解,SpringMVC常用注解,详解springmvc常用5种注解
  • spring实现ioc的四种方法,spring的ioc的三种实现方式
  • spring实现ioc的四种方法,spring的ioc的三种实现方式,简单实现Spring的IOC原理详解
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况,Spring事务失效问题分析及解决方案
  • spring5.0新特性,spring4新特性
  • spring5.0新特性,spring4新特性,spring5新特性全面介绍
  • spring ioc以及aop原理,springmvc aop原理
  • spring ioc以及aop原理,springmvc aop原理,深入浅析Spring 的aop实现原理
  • Spring cloud网关,spring cloud zuul作用
  • 留言与评论(共有 条评论)
       
    验证码: