欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > Spring Boot 整合 MyBatis

Spring Boot 整合 MyBatis

2025/2/1 3:20:34 来源:https://blog.csdn.net/sun_he_he/article/details/143510168  浏览:    关键词:Spring Boot 整合 MyBatis

一、什么是 MyBatis

1.概述

MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。

2.MyBatis 的结构图:

3.MyBatis 的优点:

  • 简单性:MyBatis 避免了使用复杂的 JDBC 代码,使得数据库的操作变得简单。

  • 类型安全:MyBatis 提供了完整的映射规则,能够保证类型的安全。

  • 灵活性:MyBatis允许自由的 SQL 语句,能满足各种查询需求。

  • 易于学习和使用:MyBatis 的配置和使用相对简单,容易上手。

  • 高性能:MyBatis 可以进行轻量级的数据库操作,并且它的缓存机制能够提高查询速度。

  • 插件支持:MyBatis 提供了插件接口,用户可以通过插件定制化 MyBatis 的功能。

二、整合 MyBatis

1.添加 MyBatis 依赖

        <!-- MySQL数据库连接器依赖 --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><!-- MyBatis-Spring Boot启动器依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency>

2.application.yml的配置

连接数据库的基本数据

spring:datasource:name: big_eventdriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/big_event?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&autoReconnect=true&useSSL=false&allowMultiQueries=true&useAffectedRows=trueusername: root  #自己的数据库名称password: 123456  #数据库密码

代码配置了Spring Boot应用的数据源信息,具体功能如下:
name: 数据源名称为 big_event。
driver-class-name: 使用MySQL的JDBC驱动 com.mysql.cj.jdbc.Driver。
url: 数据库连接URL,连接到本地的 big_event 数据库,指定了字符编码、时区、自动重连等参数。
username: 数据库用户名为 root。
password: 数据库密码为 123456。

3.新建数据表

create table user
(id          int unsigned auto_increment comment 'ID'primary key,username    varchar(20)             not null comment '用户名',password    varchar(32)             null comment '密码',nickname    varchar(10)  default '' null comment '昵称',email       varchar(128) default '' null comment '邮箱',user_pic    varchar(128) default '' null comment '头像',create_time datetime                not null comment '创建时间',update_time datetime                not null comment '修改时间',constraint usernameunique (username)
)comment '用户表';

4.新建实体类

新建 entity 包,并在此包中新建 User 类,将 user 数据表中的字段映射到实体类中,代码如下:

package com.example.demo.entity;import java.time.LocalDateTime;public class User {private Integer id;//主键IDprivate String username;//用户名private String password;//密码private String nickname;//呢称private String email;//邮箱private String userPic;//用户头像地址private LocalDateTime createTime;//创建时间private LocalDateTime updateTime;//更新时间public User() {}public User(Integer id, String username, String password, String nickname, String email, String userPic, LocalDateTime createTime, LocalDateTime updateTime) {this.id = id;this.username = username;this.password = password;this.nickname = nickname;this.email = email;this.userPic = userPic;this.createTime = createTime;this.updateTime = updateTime;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getUserPic() {return userPic;}public void setUserPic(String userPic) {this.userPic = userPic;}public LocalDateTime getCreateTime() {return createTime;}public void setCreateTime(LocalDateTime createTime) {this.createTime = createTime;}public LocalDateTime getUpdateTime() {return updateTime;}public void setUpdateTime(LocalDateTime updateTime) {this.updateTime = updateTime;}
}

5.创建 Mapper 接口

新建 mapper 包,并在此包中新建 UserMapper 接口,然后定义对对数据的操作,代码如下:

/*** UserMapper接口定义了用户数据访问层的方法* 它提供了对用户信息进行基本操作的功能,如查询、添加、更新和删除用户*/
package com.example.demo.mapper;import com.example.demo.entity.User;
import org.apache.ibatis.annotations.*;import java.util.List;@Mapper
public interface UserMapper {/*** 查询所有用户信息** @return 用户列表如果数据库中没有用户,则返回空列表*/@Select("SELECT * FROM user")List<User> findAllUser();/*** 添加新用户** @param user 待添加的用户对象必须包含必要的用户信息* @return 添加成功返回1,否则返回0*/@Insert("insert into user(username,password) values(#{username},#{password})")int addUser(User user);/*** 更新用户信息** @param user 包含更新信息的用户对象必须包含用户ID以确定要更新的记录* @return 更新成功返回1,否则返回0*/@Update("UPDATE user SET username=#{username} WHERE id=#{id}")int updUser(User user);/*** 删除指定用户** @param id 要删除的用户的ID不能为null* @return 删除成功返回1,否则返回0*/@Delete("DELETE FROM user WHERE id=#{id}")int delUser(Integer id);
}

4.创建 service 业务逻辑

新建 service 包,并在此包中新建 UserService 接口,用于处理 SQL 语句查询。代码如下:

package com.example.demo.service;import com.example.demo.entity.User;
import java.util.List;public interface UserService {/*** 获取所有用户信息** @return 用户列表,如果数据库中没有用户,则返回空列表*/List<User> getAllUsers();/*** 添加新用户** @param user 待添加的用户对象,必须包含必要的用户信息* @return 添加成功返回true,否则返回false*/boolean addUser(User user);/*** 更新用户信息** @param user 包含更新信息的用户对象,必须包含用户ID以确定要更新的记录* @return 更新成功返回true,否则返回false*/boolean updateUser(User user);/*** 删除指定用户** @param id 要删除的用户的ID,不能为null* @return 删除成功返回true,否则返回false*/boolean deleteUser(Integer id);
}

在 service 包中新建impl 包,并在此包中新建 UserServiceImpl 实现接口,代码如下:

package com.example.demo.service.impl;import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;/*** 获取所有用户信息** @return 用户列表,如果数据库中没有用户,则返回空列表*/@Overridepublic List<User> getAllUsers() {return userMapper.findAllUser();}/*** 添加新用户** @param user 待添加的用户对象,必须包含必要的用户信息* @return 添加成功返回true,否则返回false*/@Overridepublic boolean addUser(User user) {return userMapper.addUser(user) == 1;}/*** 更新用户信息** @param user 包含更新信息的用户对象,必须包含用户ID以确定要更新的记录* @return 更新成功返回true,否则返回false*/@Overridepublic boolean updateUser(User user) {return userMapper.updUser(user) == 1;}/*** 删除指定用户** @param id 要删除的用户的ID,不能为null* @return 删除成功返回true,否则返回false*/@Overridepublic boolean deleteUser(Integer id) {return userMapper.delUser(id) == 1;}
}

5.新建 controller 

新建 controller 包,并在此包中新建 MybatisController  控制类。代码如下:

package com.example.demo.controller;import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/user")
public class MybatisController {@Autowiredprivate UserService userService;@GetMapping("/list")public List<User> getAllUsers() {return userService.getAllUsers();}@PostMapping("/add")public boolean addUser(@RequestBody User user) {return userService.addUser(user);}@PutMapping("/update")public boolean updateUser(@RequestBody User user) {return userService.updateUser(user);}@DeleteMapping("/{id}")public boolean deleteUser(@PathVariable Integer id) {return userService.deleteUser(id);}
}

6.总结

逻辑包

entity:定义了用户实体类 User。
mapper:定义了数据访问层接口 UserMapper,并使用 MyBatis 注解来映射 SQL 语句。
service:定义了业务逻辑接口 UserService 及其实现类 UserServiceImpl。
controller:定义了 RESTful API 控制器 UserController,处理 HTTP 请求。

通过以上步骤,您可以在 Spring Boot 应用中成功整合 MyBatis,并实现用户管理的基本功能。

三、验证

在浏览器中输入端口号,即可看到信息:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com