最近想着创建一个springboot项目用来练练手,毕竟平时都是搞wcs系统和硬件打交道,主要都是一些串口通信、tcp通信、udp通信等,将近半年没有写过sql语句了,没想到创建项目时候就遇到了一些问题。
项目结构:
SpringBoot Could not autowire无法注入:
springboot项目创建一般有controller层、service层、serviceImpl层、dao层和mapper层。
使用@Autowired注解时,运行报了这个问题。
解决方法:
①在Dao层添加@Mapper注解
②在启动类中添加@ComponentScan注解或者@MapperScan注解,指定需要实例化注入的文件
@检查你的控制台,查看有无sql报错,可能是由于你的pom文件中未导入MySQL依赖
<!-- 引入mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<!-- jdbc连接-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
Invalid bound statement (not found):
原因是由于编译的时候无法读取到对应的xml文件
解决方法:
①.java文件放在com.example.webdemo目录下,.xml文件放在Resource目录下,并在application文件中指定xml文件的读取路径
#设置xml文件读取路径
mybatis.mapper-locations=classpath*:Mapper/*.xml
②检查xml文件的namespace是否正确
③检查dao层接口文件中的方法在对应的xml文件中的方法名是否对应
以下是我的application.properties文件:
#设置端口号
server.port=8088
#设置banner控制台打印出的字体格式
spring.banner.charset=GBK
#设置xml文件读取路径
mybatis.mapper-locations=classpath*:Mapper/*.xml
#建立jdbc连接
server.servlet.context-path=/zqw/webDemo
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/webdemo?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username = root
spring.datasource.password = 123456