SpringBoot怎么整合Mybatis实现增删改查

发布时间:2022-08-23 10:56:09 作者:iii
来源:亿速云 阅读:276

SpringBoot怎么整合Mybatis实现增删改查

目录

  1. 引言
  2. SpringBoot简介
  3. Mybatis简介
  4. SpringBoot整合Mybatis的准备工作
  5. 创建SpringBoot项目
  6. 配置Mybatis
  7. 创建实体类和Mapper接口
  8. 编写Mapper XML文件
  9. 实现增删改查功能
  10. 测试增删改查功能
  11. 总结

引言

在现代的Java开发中,SpringBoot和Mybatis是两个非常流行的框架。SpringBoot以其简洁的配置和快速的开发能力而闻名,而Mybatis则以其灵活的SQL映射和强大的数据库操作能力而受到开发者的青睐。本文将详细介绍如何在SpringBoot项目中整合Mybatis,并实现基本的增删改查(CRUD)功能。

SpringBoot简介

SpringBoot是Spring框架的一个子项目,旨在简化Spring应用的初始搭建和开发过程。它通过自动配置和约定优于配置的原则,使得开发者能够快速启动和运行Spring应用。SpringBoot内置了Tomcat、Jetty等Web服务器,无需额外的配置即可运行Web应用。

Mybatis简介

Mybatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。Mybatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects)映射成数据库中的记录。

SpringBoot整合Mybatis的准备工作

在开始整合之前,我们需要准备以下工具和环境:

  1. JDK:确保安装了JDK 1.8或更高版本。
  2. Maven:用于项目依赖管理和构建。
  3. IDE:推荐使用IntelliJ IDEA或Eclipse。
  4. 数据库:本文以MySQL为例,确保已安装并配置好MySQL数据库。

创建SpringBoot项目

首先,我们需要创建一个SpringBoot项目。可以通过Spring Initializr来快速生成项目骨架。

  1. 打开Spring Initializr
  2. 选择项目类型为Maven Project,语言为Java,Spring Boot版本选择最新的稳定版。
  3. 填写项目元数据(Group、Artifact、Name等)。
  4. 在依赖中选择以下依赖:
    • Spring Web
    • MyBatis Framework
    • MySQL Driver
  5. 点击生成按钮,下载生成的项目压缩包并解压。
  6. 使用IDE导入项目。

配置Mybatis

在SpringBoot项目中,Mybatis的配置主要通过application.propertiesapplication.yml文件来完成。

配置数据库连接

application.properties文件中添加以下配置:

# 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# Mybatis配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.mybatisdemo.entity

配置Mybatis Mapper扫描

在SpringBoot项目中,Mybatis的Mapper接口需要通过@MapperScan注解来扫描。在启动类中添加以下注解:

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.example.mybatisdemo.mapper")
public class MybatisDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisDemoApplication.class, args);
    }

}

创建实体类和Mapper接口

创建实体类

首先,我们需要创建一个实体类,用于映射数据库中的表。假设我们有一个User表,表结构如下:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

对应的实体类User.java如下:

package com.example.mybatisdemo.entity;

public class User {
    private Integer id;
    private String name;
    private Integer age;

    // Getters and Setters
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

创建Mapper接口

接下来,我们创建一个Mapper接口UserMapper.java,用于定义数据库操作的方法。

package com.example.mybatisdemo.mapper;

import com.example.mybatisdemo.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user WHERE id = #{id}")
    User getUserById(Integer id);

    @Select("SELECT * FROM user")
    List<User> getAllUsers();

    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void insertUser(User user);

    @Update("UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}")
    void updateUser(User user);

    @Delete("DELETE FROM user WHERE id=#{id}")
    void deleteUser(Integer id);
}

编写Mapper XML文件

虽然我们可以通过注解来实现SQL映射,但在复杂的SQL场景下,使用XML文件会更加灵活。在src/main/resources/mapper目录下创建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.mybatisdemo.mapper.UserMapper">

    <resultMap id="UserResultMap" type="com.example.mybatisdemo.entity.User">
        <id property="id" column="id" />
        <result property="name" column="name" />
        <result property="age" column="age" />
    </resultMap>

    <select id="getUserById" resultMap="UserResultMap">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <select id="getAllUsers" resultMap="UserResultMap">
        SELECT * FROM user
    </select>

    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO user(name, age) VALUES(#{name}, #{age})
    </insert>

    <update id="updateUser">
        UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}
    </update>

    <delete id="deleteUser">
        DELETE FROM user WHERE id=#{id}
    </delete>

</mapper>

实现增删改查功能

创建Service层

为了更好的组织代码,我们创建一个Service层来处理业务逻辑。创建UserService.java接口:

package com.example.mybatisdemo.service;

import com.example.mybatisdemo.entity.User;

import java.util.List;

public interface UserService {
    User getUserById(Integer id);
    List<User> getAllUsers();
    void insertUser(User user);
    void updateUser(User user);
    void deleteUser(Integer id);
}

创建UserServiceImpl.java实现类:

package com.example.mybatisdemo.service.impl;

import com.example.mybatisdemo.entity.User;
import com.example.mybatisdemo.mapper.UserMapper;
import com.example.mybatisdemo.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 User getUserById(Integer id) {
        return userMapper.getUserById(id);
    }

    @Override
    public List<User> getAllUsers() {
        return userMapper.getAllUsers();
    }

    @Override
    public void insertUser(User user) {
        userMapper.insertUser(user);
    }

    @Override
    public void updateUser(User user) {
        userMapper.updateUser(user);
    }

    @Override
    public void deleteUser(Integer id) {
        userMapper.deleteUser(id);
    }
}

创建Controller层

最后,我们创建一个Controller层来暴露RESTful API。创建UserController.java

package com.example.mybatisdemo.controller;

import com.example.mybatisdemo.entity.User;
import com.example.mybatisdemo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Integer id) {
        return userService.getUserById(id);
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @PostMapping
    public void insertUser(@RequestBody User user) {
        userService.insertUser(user);
    }

    @PutMapping
    public void updateUser(@RequestBody User user) {
        userService.updateUser(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Integer id) {
        userService.deleteUser(id);
    }
}

测试增删改查功能

启动项目

在IDE中运行MybatisDemoApplication类,启动SpringBoot项目。

使用Postman测试API

  1. 插入用户

    • 请求URL:POST http://localhost:8080/users
    • 请求体:
      
      {
      "name": "张三",
      "age": 25
      }
      
  2. 查询所有用户

    • 请求URL:GET http://localhost:8080/users
  3. 查询单个用户

    • 请求URL:GET http://localhost:8080/users/1
  4. 更新用户

    • 请求URL:PUT http://localhost:8080/users
    • 请求体:
      
      {
      "id": 1,
      "name": "李四",
      "age": 30
      }
      
  5. 删除用户

    • 请求URL:DELETE http://localhost:8080/users/1

总结

通过本文的介绍,我们详细讲解了如何在SpringBoot项目中整合Mybatis,并实现了基本的增删改查功能。SpringBoot和Mybatis的结合使得开发过程更加简洁高效,适合快速开发和维护中小型项目。希望本文能帮助读者更好地理解和应用这两个框架。

推荐阅读:
  1. SpringBoot整合Mybatis(一)
  2. springboot整合mybatis

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot mybatis

上一篇:怎么使用Node实现切片拼接及地图导出

下一篇:怎么利用Python实现获取照片位置信息

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》