SpringBoot集成MyBatis实现MySQL操作
  19qMgiCiiRfc 2023年12月12日 15 0

一、前言

在我们日常的Web应用开发中,数据库的操作不可避免。而SpringBoot做为一款快速开发的框架,有着优秀的集成能力,可以快速集成其他框架。MyBatis是一个优秀的ORM框架,可以大大的简化我们的数据库操作。我们使用SpringBoot集成Mybatis可以让我们实现高效的MySQL增删改查的操作,大大提高开发效率。

二、SpringBoot整合MyBatis

1.引入依赖

我们主要引入Mybatis依赖和MySQL依赖。

<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.28</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.31</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.4</version>
		</dependency>

2.application.properties配置

#数据库配置信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8

3.创建数据表

CREATE TABLE t_user (
	id BIGINT not null  auto_increment,
name VARCHAR (255),
age int,
PRIMARY key (id))ENGINE=INNODB DEFAULT CHARSET=utf8

4.创建实体类

package com.example.bootdemo.entity;

import lombok.Data;

/**
 * @author qx
 * @date 2023/12/02
 * @desc 用户实体类
 */
@Data
public class User {

    private Long id;

    private String name;

    private Integer age;

}

5.创建Mapper持久层接口

package com.example.bootdemo.mapper;

import com.example.bootdemo.entity.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

@Mapper
@Repository
public interface UserMapper {

    @Select("select * from t_user where id=#{id}")
    User selectById(Long id);


    @Update("update t_user set name=#{name},age=#{age} where id=#{id}")
    void update(User user);

    @Insert("insert into t_user(name,age) values(#{name},#{age})")
    void insert(User user);

    @Delete("delete from t_user where id=#{id}")
    void delete(Long id);


}

6.单元测试

package com.example.bootdemo;

import com.example.bootdemo.entity.User;
import com.example.bootdemo.mapper.UserMapper;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@Slf4j
@SpringBootTest
class BootDemoApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    void testAdd() {
        // 测试新增
        User user = new User();
        user.setName("admin");
        user.setAge(20);
        userMapper.insert(user);
    }

    @Test
    void testSelect() {
        // 测试查询
        User user = userMapper.selectById(1L);
        log.info("user={}", user);
    }

    @Test
    void testUpdate() {
        // 测试修改
        User user = new User();
        user.setName("admin1");
        user.setAge(20);
        user.setId(1L);
        userMapper.update(user);
    }

    @Test
    void testDelete() {
        // 测试删除
        userMapper.delete(1L);
    }

}

我们先测试新增,执行测试方法后,我们查看数据表的数据是否新增成功了。

SpringBoot集成MyBatis实现MySQL操作_MyBatis

接下来我们再执行查询的方法testSelect。我们发现这控制台上打印了查询到的数据。

2023-12-02 23:11:25.257  INFO 8436 --- [           main] c.e.bootdemo.BootDemoApplicationTests    : user=User(id=1, name=admin, age=20)

然后我们再执行修改方法testUpdate。执行方法后再刷新数据表,发现修改数据也成功了。

SpringBoot集成MyBatis实现MySQL操作_MyBatis_02

最后我们执行删除的方法testDelete。执行方法之后发现ID为1的数据已经被删除成功了。

SpringBoot集成MyBatis实现MySQL操作_SpringBoot_03

三、MyBatis注解说明

1.参数注解@Param

我们可以使用这个注解来指定参数的名称。

@Select("select * from t_user where id=#{id}")
    User selectById(@Param("id") Long id);

比如上面的@Param中的参数id就对应数据查询语句中的参数名称id。这两个数据是需要一致的。

2.参数使用对象

@Insert("insert into t_user(name,age) values(#{name},#{age})")
    void insert(User user);

我们可以直接使用对象来做为参数使用,这样就可以直接使用对象中的属性做为参数名称。

3.参数使用Map

参数使用Map需要Map中的key和数据查询语句中的参数名称一样。

@Insert("insert into t_user(name,age) values(#{name},#{age})")
    void add(Map<String,Object> map);

测试代码如下所示:

@Test
    void testAdd(){
        Map<String,Object> map = new HashMap<>();
        map.put("name","hello");
        map.put("age",20);
        userMapper.add(map);
    }

我们执行测试方法后,一样可以成功新增数据。

SpringBoot集成MyBatis实现MySQL操作_SpringBoot_04

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月12日 0

暂无评论

推荐阅读
19qMgiCiiRfc