SpringBoot整合Mybatis简单实现增删改查

下面是关于SpringBoot整合Mybatis实现增删改查的详细攻略:

1. 环境搭建

在开始之前,你需要在本地安装好以下软件:

  • JDK 1.8或以上版本
  • Maven
  • MySQL数据库

在安装好上述软件后,你可以新建一个SpringBoot项目,这里使用的是IntelliJ IDEA,你可以通过IDEA创建SpringBoot项目并选择添加Mybatis Starter依赖,如下所示:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>${mybatis-spring-boot.version}</version>
</dependency>

2. 数据库配置

接下来,我们需要在application.properties文件中配置数据库相关的信息,该文件路径为:src/main/resources/application.properties。在文件中添加以下内容:

# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456

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

其中,spring.datasource.url为数据库连接地址,spring.datasource.usernamespring.datasource.password为数据库账号和密码,mybatis.type-aliases-package为实体类所在的包名,mybatis.mapper-locations为mapper接口所在的包名。

在完成数据库配置后,可以在IDEA中依次右击工程名称->Maker Directory as ->Resources Folder,创建一个resources文件夹。

3. 实体类和Mapper接口文件

接下来,我们需要创建实体类和Mapper接口文件。首先是实体类,在com.example.entity包下新建一个User实体类:

public class User {
    private Long id;
    private String name;
    private Integer age;
    // 省略getter和setter方法
}

然后,我们需要新建一个Mapper接口,该接口位于com.example.mapper包下,示例如下:

@Mapper
@Repository
public interface UserMapper {
    User selectByPrimaryKey(Long id);

    int insert(User user);

    int updateByPrimaryKey(User user);

    int deleteByPrimaryKey(Long id);
}

需要注意的是,在UserMapper接口上添加@Mapper注解,表示该接口是Mybatis的Mapper接口;而@Repository注解则表示该类是一个Repository Bean。

在创建Mapper接口后,需要在resources文件夹下新建一个mapper文件夹,并在该文件夹下添加UserMapper.xml文件,示例如下:

<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.mapper.UserMapper">

    <select id="selectByPrimaryKey" resultType="com.example.entity.User">
        select * from user where id = #{id}
    </select>

    <insert id="insert" parameterType="com.example.entity.User">
        insert into user(name, age) values(#{name}, #{age})
    </insert>

    <update id="updateByPrimaryKey" parameterType="com.example.entity.User">
        update user set name=#{name},age=#{age} where id=#{id}
    </update>

    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        delete from user where id =#{id}
    </delete>

</mapper>

selectinsertupdatedelete标签中,id属性为对应的Mapper接口中方法名,parameterType属性为Mapper接口方法的参数类型,resultType属性为查询结果的实体类类型。

4. Service层

接下来,我们需要新建一个Service接口和实现类,在com.example.service包下创建UserService接口,示例如下:

public interface UserService {
    User selectByPrimaryKey(Long id);

    int insert(User user);

    int updateByPrimaryKey(User user);

    int deleteByPrimaryKey(Long id);
}

然后,在com.example.service.impl包下创建UserServiceImpl类,示例如下:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User selectByPrimaryKey(Long id) {
        return userMapper.selectByPrimaryKey(id);
    }

    @Override
    public int insert(User user) {
        return userMapper.insert(user);
    }

    @Override
    public int updateByPrimaryKey(User user) {
        return userMapper.updateByPrimaryKey(user);
    }

    @Override
    public int deleteByPrimaryKey(Long id) {
        return userMapper.deleteByPrimaryKey(id);
    }
}

需要注意的是,在UserServiceImpl类上添加@Service注解,表示该类是一个Service Bean。同时,我们在该类中注入了UserMapper接口,使用该接口中的方法来操作数据库。

5. Controller层

最后,我们需要在com.example.controller包下创建一个UserController类,示例如下:

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

    @Autowired
    private UserService userService;

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

    @PostMapping("")
    public int insert(@RequestBody User user) {
        return userService.insert(user);
    }

    @PutMapping("")
    public int updateByPrimaryKey(@RequestBody User user) {
        return userService.updateByPrimaryKey(user);
    }

    @DeleteMapping("/{id}")
    public int deleteByPrimaryKey(@PathVariable("id") Long id) {
        return userService.deleteByPrimaryKey(id);
    }
}

需要注意的是,在UserController类上添加@RestController注解,表示该类是一个处理HTTP请求的Controller Bean。在类中注入了UserService接口,并在方法中调用该接口中的方法。

6. 代码测试

在完成上述操作后,我们已经可以在浏览器中访问http://localhost:8080/user/1来查询用户ID为1的记录了。现在,我们可以使用Postman来进行增、删、改操作。示例如下:

插入记录

  • 请求方式:POST
  • URL:http://localhost:8080/user
  • 请求头:Content-Type: application/json
  • 请求体:
{
    "name": "test",
    "age": 25
}

更新记录

  • 请求方式:PUT
  • URL:http://localhost:8080/user
  • 请求头:Content-Type: application/json
  • 请求体:
{
    "id": 1,
    "name": "update",
    "age": 30
}

删除记录

  • 请求方式:DELETE
  • URL:http://localhost:8080/user/1

至此,我们完成了SpringBoot整合Mybatis简单实现增删改查的攻略。在实际开发中,我们还可以通过分页和条件查询等方式来增强用户操作体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合Mybatis简单实现增删改查 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Spring MVC学习笔记之json格式的输入和输出

    下面就为你讲解“Spring MVC学习笔记之json格式的输入和输出”的完整攻略。 什么是JSON格式? JSON是一种轻量级的数据交换格式,其全称为“JavaScript Object Notation”,它采用文本格式来表示数据对象。JSON格式可用于数据的序列化和反序列化,具有易读性、易编写和易于解析的特点,被广泛用于Web应用程序间的数据传输。 S…

    Java 2023年6月15日
    00
  • Java与Http协议的详细介绍

    一、Java与HTTP协议的介绍 HTTP协议是一种应用层协议,它是在Web的基础上发展起来的。Java作为一种编程语言,可以通过使用Java的网络库来实现HTTP协议的通信。 Java提供了许多网络相关的库,其中包括: URL和URLConnection:用于向服务器发送HTTP请求并接收响应。 HttpClient库:是开源的第三方库,提供了更多的功能和…

    Java 2023年6月15日
    00
  • java实现文件保存到本地的方法

    Java 实现文件保存到本地的方法可以通过以下步骤来实现。 第一步:准备保存文件的本地目录 在 Java 代码中,我们需要提前准备好一个本地保存文件的目录,可以使用 File 类来生成目录,示例代码如下: File directory = new File("D:/files"); if(!directory.exists()){ dir…

    Java 2023年5月20日
    00
  • .properties文件读取及占位符${…}替换源码解析

    下面我来给出“.properties文件读取及占位符${…}替换源码解析”的完整攻略,并提供两个示例说明。 .properties文件读取 在Java中,我们可以使用java.util.Properties类来解析.properties文件。具体的步骤如下: 使用java.io.FileInputStream类将.properties文件读取到输入流中,…

    Java 2023年5月27日
    00
  • Java 对象序列化 NIO NIO2详细介绍及解析

    Java 对象序列化 NIO NIO2详细介绍及解析 本文将从以下三个方面详细介绍Java中的对象序列化、NIO和NIO2: Java对象序列化 NIO NIO2 Java对象序列化 Java对象序列化是指将Java对象转换为字节流,以便在网络上传输或在本地保存到文件中。 Java中的对象序列化可以通过序列化(Serialization)API来实现,包括S…

    Java 2023年5月27日
    00
  • Java实现统计字符串出现的次数

    下面来详细讲解Java实现统计字符串出现次数的完整攻略。 1. 获取待统计的字符串和要统计的字符 首先需要从用户那里获取到待统计的字符串和要统计的字符,可以使用Scanner类进行输入。示例代码如下: Scanner sc = new Scanner(System.in); System.out.println("请输入待统计的字符串:"…

    Java 2023年5月27日
    00
  • java web实现用户权限管理

    Java Web 实现用户权限管理,主要的实现思路就是通过对用户进行访问控制、绑定角色、授权等操作,来达到实现用户权限控制的目的。整个流程主要包含以下几个步骤: 1.设计用户权限表2.设计用户角色与权限表3.设计角色表4.设计角色权限表5.整合权限验证 接下来详细讲解每个步骤的具体实现方法。 设计用户权限表 一个用户可能拥有不同的权限,所以需要在数据库中设计…

    Java 2023年6月15日
    00
  • java实现的冒泡排序算法示例

    下面是详细的攻略: 冒泡排序算法原理 冒泡排序算法是一种比较简单的排序方法,其基本原理是依次比较相邻的两个元素,将较大的元素向后移动,直到全部元素排序完成。冒泡排序算法的时间复杂度为O(n^2),虽然比较耗时,但由于其简单易懂的特点,经常被用于教学和入门练习。 java实现代码示例 以下是java实现的冒泡排序算法示例: public static void…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部