springboot整合mybatis

使用start.spring.io源出错

在这里插入图片描述
添加起步依赖

在这里插入图片描述
无法启动项目
在这里插入图片描述
在这里插入图片描述

改用阿里源

在这里插入图片描述
查看pom文件
在这里插入图片描述
启动项目
在这里插入图片描述

测试类无法注入Spring容器类

写springboot项目时,遇到了一个很令人困惑的问题,就是在junit测试时,项目运行会报
java.lang.IllegalStateException: Failed to load ApplicationContext;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
报错原因,xml配置文件路径问题。。。
但是我检查了mapper.xml和接口mapper路径都一致
在这里插入图片描述
测试类路径也一致(项目目录已经对齐了,junit测试类的包和所写的类的包要同)
在这里插入图片描述
找了半天,找到了问题所在
application.yam的优先级低于application.properties
更加详细就查看资料:“YAML文件_配置文件存放位置及优先级”
在这里插入图片描述
在这里插入图片描述
导致正确的mapper.xml路径被覆盖
application.properties中的所有内容如下

# 应用名称
spring.application.name=springbootmybatis2
# 应用服务 WEB 访问端口
server.port=8080
#下面这些内容是为了让MyBatis映射
#指定Mybatis的Mapper文件
mybatis.mapper-locations=classpath:mappers/*xml
#指定Mybatis的实体目录
mybatis.type-aliases-package=com.itbz.springbootmybatis2.mybatis.entity
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/blue?serverTimezone=UTC
# 数据库用户名&密码:
spring.datasource.username=***
spring.datasource.password=***

全部删除
保留application.yam的内容

# 数据源
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///student?serverTimezone=UTC
    username: root
    password: root
# mybatis配置
mybatis:
  # 映射文件位置
  mapper-locations: com/itbz/springbootmybatis2/mapper/*Mapper.xml
# 别名
  type-aliases-package: com.itbz.springbootmybatis2.domain

#日志格式
logging:
  pattern:
  console: '%d{HH:mm:ss.SSS}%clr(%-5level) --- [%-15thread]%cyan(%-50logger{50}):%msg%n'

成功查询到数据
在这里插入图片描述

在这里插入图片描述
但是注入spring容器类还是爆红
在这里插入图片描述

自动注入IDEA爆红

在使用@Autowrited注解时,报红提示我“Could not autowire. No beans of ‘UserMapper’ type found.”错误,但可以运行,结果也正确
在这里插入图片描述

方法1

将@Autowrited改为@Autowrited(required = false)。原因是spring auto scan配置找不到对应的bean,于是提示找不到对应bean的错误。
在这里插入图片描述

方法2(不推荐,好像会报错)

将@Mapper注解改为@Repository
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方法3

修改IDEA的方法

@Mapper和@Repository的区别
@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中。
@Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值