Spring Boot 整合 MyBatis(过程及报错解决) 您所在的位置:网站首页 springboot整合spark出现rdd错误 Spring Boot 整合 MyBatis(过程及报错解决)

Spring Boot 整合 MyBatis(过程及报错解决)

2023-09-03 16:33| 来源: 网络整理| 查看: 265

引言

最近在学习Spring Boot,在整合MyBatis进行数据访问,报过多次错,踩了很多坑,在此记录一下。

MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML或注解来配置和映射原生信息,将接口和 Java 的POJOs(Plain Ordinary Java Object,普通的Java对象)映射成数据库中的记录。

整合过程 导入依赖 pom.xml文件如下: 4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.3.RELEASE com.kuang springboot-05-mybatis 0.0.1-SNAPSHOT springboot-05-mybatis Demo project for Spring Boot 1.8 org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.1 org.projectlombok lombok org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-web mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin 在 application.properties 中连接数据库 spring.datasource.username=root spring.datasource.password=root spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 测试数据源 在tests类进行测试是否连接了数据库,代码及测试结果如下: package com.kuang; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import javax.sql.DataSource; import java.sql.SQLException; @SpringBootTest class Springboot05MybatisApplicationTests { @Autowired DataSource dataSource; @Test void contextLoads() throws SQLException { System.out.println(dataSource.getClass()); System.out.println(dataSource.getConnection()); } }

测试结果

项目目标

对数据库 mybatis 中 user 表的查询,user 表内容为: 在这里插入图片描述

项目构建

项目结构 在这里插入图片描述

搭建步骤: 1). 在 application.properties 中整合 MyBatis

#设置包别名(在Mapper映射文件中直接使用实体类名) mybatis.type-aliases-package==com.kuang.pojo #告诉系统在哪里找mapper.xml文件(映射文件) mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

2). 创建实体类User

package com.kuang.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor public class User { private int id; private String uname; private String pwd; }

3). 创建数据访问接口

package com.kuang.mapper; import com.kuang.pojo.User; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; import java.util.List; /**** * 创建MyBatis的 Mapper 映射接口 */ //这个注解表示这是一个mybatis的 mapper 类 :Dao(数据访问层) @Mapper @Repository public interface UserMapper{ List queryUserList(); // User queryUserById(int id); // int addUser(User user); // int updateUser(User user); // int deleteUser(int id); }

4). 创建 Mapper 映射文件 在 resources 目录下,创建名为 mapper 的包,并在包中创建 SQL 映射文件 Mapper.xml。

select * from user

5). 创建控制器类

package com.kuang.controller; import com.kuang.mapper.UserMapper; import com.kuang.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/queryUserList") public List queryUserList(){ List userList = userMapper.queryUserList(); for(User user : userList){ System.out.println(user); } return userList; } }

6). 运行 由于在 Mapper 映射接口中有 @Mapper 注解,Application 主类中不用添加 @MapperScan 注解。直接启动,运行效果为: 在这里插入图片描述

报错记录 bean无法注入的问题——Error creating bean with name ‘userController’:

错误原因可能有:

包的位置不对,可以看下上面的项目结构,主类 和 子包都要在com.kuang 包下。注解使用不对,如 Controller接口没有使用@Controller、@RestController注解等。xml 文件格式,去掉空格和中文注解 Invalid bound statement (not found):

这个报错原因一般是xml 映射文件有错误。检查下面几处:

xml 文件所在包名 与 接口 所在包名 一致,否则会报500 在这里插入图片描述

xml 文件中 namespace 与 映射接口 的位置一致 在这里插入图片描述

检察函数名是否一致 UserMapper 映射接口中 在这里插入图片描述 Mapper.xml 中 在这里插入图片描述

总结

虽然是个很简单的整合,但一直报错,反复检查代码的过程中,也对各个注解的功能,项目的架构理解更深,继续积累,继续加油!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有