找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1186

积分

0

好友

210

主题
发表于 3 天前 | 查看: 7| 回复: 0

本教程将详细介绍如何在SpringBoot项目中整合MyBatis框架,并通过一个简单的用户管理案例,演示完整的增删改查操作。跟随步骤,你将能快速构建起项目的数据访问层。

项目创建与环境准备

首先,使用Spring Initializr创建一个新的SpringBoot项目。

  1. 访问 https://start.spring.io/
  2. 选择项目类型为 Maven,语言为 Java,SpringBoot 版本建议选择稳定的最新版。
  3. 在 Dependencies 中添加以下依赖:
    • Spring Web
    • MyBatis Framework
    • MySQL Driver
  4. 点击“Generate”下载项目压缩包并解压,用IDE打开。

配置文件

src/main/resources/application.yml 中配置数据源和MyBatis。

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC&characterEncoding=utf8
    username: your_username
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver

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

实体类与数据库表

创建一个与数据库表对应的实体类 User.java

package com.example.demo.entity;

public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
    // 省略 Getter 和 Setter 方法
}

对应的SQL建表语句如下,请在MySQL数据库中执行。

CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Mapper接口与XML映射文件

创建一个Mapper接口 UserMapper.java,定义数据操作方法。

package com.example.demo.mapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.*;
import java.util.List;

@Mapper
public interface UserMapper {
    // 查询所有用户
    List<User> findAll();
    // 根据ID查询用户
    User findById(@Param("id") Long id);
    // 插入用户
    int insert(User user);
    // 更新用户
    int update(User user);
    // 删除用户
    int deleteById(@Param("id") Long id);
}

src/main/resources/mapper 目录下创建对应的XML映射文件 UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
    <select id="findAll" resultType="com.example.demo.entity.User">
        SELECT * FROM user
    </select>
    <select id="findById" resultType="com.example.demo.entity.User">
        SELECT * FROM user WHERE id = #{id}
    </select>
    <insert id="insert" parameterType="com.example.demo.entity.User" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO user (name, age, email) VALUES (#{name}, #{age}, #{email})
    </insert>
    <update id="update" parameterType="com.example.demo.entity.User">
        UPDATE user SET name=#{name}, age=#{age}, email=#{email} WHERE id=#{id}
    </update>
    <delete id="deleteById">
        DELETE FROM user WHERE id = #{id}
    </delete>
</mapper>

编写Service层

创建Service接口 UserService.java 及其实现类 UserServiceImpl.java,封装业务逻辑。

package com.example.demo.service;
import com.example.demo.entity.User;
import java.util.List;
public interface UserService {
    List<User> getAllUsers();
    User getUserById(Long id);
    Integer addUser(User user);
    Integer updateUser(User user);
    Integer deleteUser(Long id);
}
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 {
    @Autowired
    private UserMapper userMapper;
    @Override public List<User> getAllUsers() { return userMapper.findAll(); }
    @Override public User getUserById(Long id) { return userMapper.findById(id); }
    @Override public Integer addUser(User user) { return userMapper.insert(user); }
    @Override public Integer updateUser(User user) { return userMapper.update(user); }
    @Override public Integer deleteUser(Long id) { return userMapper.deleteById(id); }
}

创建Controller

最后,创建Restful API控制器 UserController.java 来暴露HTTP接口。

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("/api/users")
public class UserController {
    @Autowired
    private UserService userService;
    @GetMapping
    public List<User> getAllUsers() { return userService.getAllUsers(); }
    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) { return userService.getUserById(id); }
    @PostMapping
    public String addUser(@RequestBody User user) {
        userService.addUser(user);
        return "用户添加成功";
    }
    @PutMapping
    public String updateUser(@RequestBody User user) {
        userService.updateUser(user);
        return "用户更新成功";
    }
    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
        return "用户删除成功";
    }
}

测试与验证

启动SpringBoot应用。可以使用Postman、cURL或浏览器测试以下API端点:

  • GET /api/users:获取所有用户列表。
  • GET /api/users/{id}:根据ID获取特定用户。
  • POST /api/users:新增一个用户(请求体为JSON格式的User对象)。
  • PUT /api/users:更新一个用户信息。
  • DELETE /api/users/{id}:删除指定ID的用户。

至此,一个整合了MyBatis的SpringBoot应用已成功构建,并具备了完整的CRUD功能。你可以在此基础上,进一步探索MyBatis的高级特性,如动态SQL、分页插件等,以满足更复杂的业务需求。




上一篇:利润分析六要点实战指南:从现金流洞察到可持续性评估
下一篇:VMware与VirtualBox虚拟机高效文件传输:5种实用方法详解
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 18:47 , Processed in 0.110263 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表