springboot3整合mybatis框架的流程

1. 环境准备

  • springboot v3.3.2
  • maven 3.9.1
  • jdk 17

2. 准备数据库

在本地生成t_user表,主要包含用户名,id,昵称三个字段。

DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `user_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
  `user_id` int NOT NULL,
  `nick_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `t_user` VALUES ('jike', 2023001, 'jik');
INSERT INTO `t_user` VALUES ('mike', 2023002, 'mik');

3. 导入依赖

分别是:web启动依赖,mybatis启动依赖,mysql数据库插件,springboot配置处理器(可选),lombok插件,以及springboot测试依赖。

注意这里mybatis的版本尽量使用比较新的版本,如果是3.0.0 则会抛出异常
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

4. 编写User类 TUser.java

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TUser {
    private String userName;
    private int userId;
    private String nickName;
}

5. Mapper接口 UserMapper.java

@Mapper
public interface UserMapper {
   TUser selectUserById(@Param("id") int id);
}

6. 生成与接口对应的UserMapper.xml,可以借助MybatisX插件生成

<mapper namespace="com.example.demo01.mapper.UserMapper">
    <select id="selectUserById" resultType="com.example.demo01.pojo.TUser" parameterType="int">
       select * from t_user where user_id = #{id};
    </select>
</mapper>

7. service层接口UserService和实现类UserServiceImpl

public interface UserService {
    TUser selectUserById(int id);
}

注意实现类上标注@Service注解,其中自动注入UserMapper作为实现,UserMapper接口不需要实现,因为MyBatis通过动态代理机制为Mapper接口生成了实现类,并在运行时进行方法调用。

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserMapper userMapper;
    @Override
    public TUser selectUserById(int id) {
        return userMapper.selectUserById(id);
    }
}

8 Controller

@RestController
public class UserController {
    @Autowired
    UserService userService;
    @GetMapping("/user/{id}")
    public TUser selecetUser(@PathVariable("id") int userId){
        System.out.println(userId);
        return userService.selectUserById(userId);
    }
}

9 配置文件

配置文件中除了数据源的配置之外,就是mybatis中xml文件的位置,以及当数据库中的字段是下划线,但相中中的实体类是驼峰命名时,需要将下划线映射成驼峰。

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mydatabase
    username: root
    password: 1234

mybatis:
  mapper-locations: classpath:/mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true
debug: true

10 完整的项目目录

image.png


Francis_Hui
1 声望0 粉丝