关于@Mapper注解的几个问题

本文来说下关于@Mapper注解的几个问题


@Mapper注解

作用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类
 
添加位置:接口类上面

@Mapper
public interface StudentMapper {

    List<Student> selectByStudentSelective();

}

@MapperScan注解

作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
 
添加位置:是在Springboot启动类上面添加

/**
 * 程序的
 * 主启动类
 */
@MapperScan("cn.wideth.mapper")
@SpringBootApplication
public class PdaAndIpadApplication {

    public static void main(String[] args) {

        SpringApplication.run(PdaAndIpadApplication.class, args);
    }
}

添加@MapperScan(“cn.wideth.mapper”)注解以后,cn.wideth.mapper包下面的接口类,在编译之后都会生成相应的实现类

在springboot项目中,@Mapper注解和@MapperScan注解都是在这个JAR包中导入的。也就是下面这个starter。

<!--mybatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.1.1</version>
</dependency>

@Mapper注解用来发现单个mapper,@MapperScan注解用来发现多个启动类所在包以及子包下面的mapper。

在这里插入图片描述


使用@MapperScan注解多个包

实际用的时候根据自己的包路径进行修改

/**
 * 程序的
 * 主启动类
 */
@MapperScan({"cn.wideth.mapper","cn.wideth.mapper2"})
@SpringBootApplication
public class PdaAndIpadApplication {

    public static void main(String[] args) {

        SpringApplication.run(PdaAndIpadApplication.class, args);
    }
}

@MapperScan注解扫描非启动类下面的包

如果是使用多模块来开发springboot程序,可能存在包,和启动类所在的包不一致的问题。 如果dao接口类没有在Spring Boot主程序可以扫描的包或者子包下面,可以使用如下方式进行配置。

/**
 * 程序的
 * 主启动类
 */
@MapperScan({"cn.wideth.mapper","com.wideth.mapper"})
@SpringBootApplication
public class PdaAndIpadApplication {

    public static void main(String[] args) {

        SpringApplication.run(PdaAndIpadApplication.class, args);
    }
}

本文小结

本文分析了一下@Mapper注解以及@MapperScan注解扫包的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值