添加依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.6.6</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.example</groupId>
  12. <artifactId>SpringBoot3mybatis</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>SpringBoot3mybatis</name>
  15. <description>SpringBoot3mybatis</description>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. </properties>
  19. <dependencies>
  20. <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
  21. <dependency>
  22. <groupId>org.mybatis.spring.boot</groupId>
  23. <artifactId>mybatis-spring-boot-starter</artifactId>
  24. <version>2.2.1</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter-jdbc</artifactId>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-starter-web</artifactId>
  33. </dependency>
  34. <dependency>
  35. <groupId>mysql</groupId>
  36. <artifactId>mysql-connector-java</artifactId>
  37. <scope>runtime</scope>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-starter-test</artifactId>
  42. <scope>test</scope>
  43. </dependency>
  44. </dependencies>
  45. <build>
  46. <plugins>
  47. <plugin>
  48. <groupId>org.springframework.boot</groupId>
  49. <artifactId>spring-boot-maven-plugin</artifactId>
  50. </plugin>
  51. </plugins>
  52. </build>
  53. </project>

配置数据库连接

  1. spring:
  2. datasource:
  3. url: jdbc:mysql://localhost:3306/mybatisdb?serverTimezone=UTC&useUnicode=true&charEncoding=utf-8
  4. username: root
  5. password: 123456
  6. driver-class-name: com.mysql.jdbc.Driver

测试连接

测试连接没问题,数据库就连接上了

  1. @SpringBootTest
  2. class SpringBoot3mybatisApplicationTests {
  3. @Autowired
  4. DataSource dataSource;
  5. @Test
  6. void contextLoads() throws SQLException {
  7. System.out.println(dataSource.getClass());
  8. System.out.println(dataSource.getConnection());
  9. }
  10. }

Mapper接口

  1. package com.example.springboot3mybatis.mapper;
  2. import com.example.springboot3mybatis.pojo.Emp;
  3. import org.apache.ibatis.annotations.Mapper;
  4. import org.springframework.stereotype.Repository;
  5. import java.util.List;
  6. //这个注解表示了这是一个mybatis的mapper类
  7. @Mapper
  8. @Repository
  9. public interface EmpMapper {
  10. List<Emp> queryEmps();
  11. Emp queryEmp(int id);
  12. int addEmp(Emp emp);
  13. }

关于@Repository 与 @Mapper的区别

mybatis的一些配置

注意事项:

  • 他妈个逼的,mybatis是和spring同级!同级!同级!复制笔记复制岔了,导致mybatis在spring的子级,报错研究了尼玛一天,没想到在这里。给自己一个警告,下次笔记代码完整复制,不要一句一句的复制。特别是这种对缩进很严格的东西。

关于这个报错:解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题

mybatis的mapper-locations配置

  1. spring:
  2. datasource:
  3. url: jdbc:mysql://localhost:3306/mybatisdb?serverTimezone=UTC&useUnicode=true&charEncoding=utf-8
  4. username: root
  5. password: 123456
  6. driver-class-name: com.mysql.jdbc.Driver
  7. #整合mybatis
  8. mybatis:
  9. #取别名的包
  10. type-aliases-package: com.example.springboot3mybatis.pojo
  11. #mapper映射文件的路径
  12. mapper-locations: classpath:mybatis/mapper/*.xml
  13. #下划线驼峰映射
  14. configuration:
  15. map-underscore-to-camel-case: true

mapper映射文件

在resource/mybatis/mapper目录下

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.example.springboot3mybatis.mapper.EmpMapper">
  6. <select id="queryEmps" resultType="Emp">
  7. select*from t_emp
  8. </select>
  9. <select id="queryEmp" resultType="Emp">
  10. select * from t_emp where eid=#{id}
  11. </select>
  12. <insert id="addEmp" parameterType="Emp">
  13. insert t_emp values(null,#{empName},#{age},#{sex},#{email},#{Dept.did})
  14. </insert>
  15. </mapper>

控制器层

dao,service层就没写,笔记测试代码。
如上配置下来,就能访问接口了

  1. package com.example.springboot3mybatis.controller;
  2. import com.example.springboot3mybatis.mapper.EmpMapper;
  3. import com.example.springboot3mybatis.pojo.Emp;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. import java.util.List;
  8. @RestController
  9. public class EmpController {
  10. @Autowired
  11. private EmpMapper empMapper;
  12. @GetMapping("/queryemps")
  13. public List<Emp> queryEmps() {
  14. List<Emp> emps = empMapper.queryEmps();
  15. return emps;
  16. }
  17. }