SpringBoot整合MyBatis(七)上

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: SpringBoot整合MyBatis(七)

除了JPA之外,实际开发中,也常常使用 MyBatis. 这一章节,讲解一下整合Mybatis的使用。


关于 MyBatis的相关知识,可以看老蝴蝶以前写的MyBatis系列文章


一. SpringBoot 整合 MyBatis 前期准备


按照老蝴蝶以前讲解的方式,采用Maven 构建SpringBoot项目。


一.一 pom.xml 添加依赖


 <!--引入MySql的驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!--引入springboot与mybatis整合的依赖-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>
<!-- 引入pagehelper分页插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>


一.二 application.yml 添加JPA的配置


# 引入 数据库的相关配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true
    username: root
    password: abc123
#整合mybatis时使用的
mybatis:
  #包别名
  type-aliases-package: top.yueshushu.learn.pojo
  #映射文件路径
  mapper-locations: classpath:mybatis/mapper/**/*.xml
  configuration:
    #日志信息
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl


注意,


  1. 数据库的连接信息 url 后面添加了一个 allowMultiQueries=true (允许多条语句执行)
  2. 在 resources 目录下,需要创建 mybatis/mapper 目录,放置相关的 XxxMapper.xml 文件。


7b2b23811d1f2abe1ac7ebfd6b5afe9b.png


一.三 创建 User 表


DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(15) DEFAULT NULL,
  `sex` varchar(20) DEFAULT NULL,
  `age` int(6) DEFAULT NULL,
  `description` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;


不采用Mybatis自动生成代码,只演示一些基本的操作。


二. 代码准备


二.一 pojo包下创建 User.java 类


@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {
    /**
     * @param id id编号
     * @param name 姓名
     * @param sex 性别
     * @param age 年龄
     * @param description 描述
     */
    private Integer id;
    private String name;
    private String sex;
    private Integer age;
    private String description;
}


二.二 mapper包下创建 UserMapper 接口


resources/mybatis/mapper目录下创建相应的XML映射文件


@Mapper
public interface UserMapper {
}


注意,需要添加 @Mapper的注解(SpringBoot启动类,就不用加@MapperScan 扫描了)。


<?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="top.yueshushu.learn.mapper.UserMapper">
</mapper>


二.三 service包下创建相应的接口和实现类


二.三.一 UserService 接口


public interface UserService {
}


二.三.二 UserServiceImpl 实现类


@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
}


二.四 测试类 MyBatisTests


放置在 test目录下的 top.yueshushu.learn 包下


@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
@Log4j2
public class MyBatisTests {
    @Autowired
    private UserService userService;
}


三. 整合MyBatis方法


ServiceImpl 层,除分页之外,均是一层调用,老蝴蝶为了减少篇幅,故省略 UserServiceImpl 层的代码,具体可看最后的Github链接.


所用的例子,也与 JPA时基本一样。


三.一 添加方法


三.一.一 测试类


@Test
    public void insertTest(){
        //1. 构建对象
        User user=new User();
        user.setName("欢欢");
        user.setAge(22);
        user.setSex("女");
        user.setDescription("一个非常可爱的女孩纸");
        //2. 添加方法
        userService.addUser(user);
        log.info("添加成功,{}",user);
    }


三.一.二 Mapper接口及其相关XML文件实现


UserMapper接口


void addUser(@Param("user") User user);


UserMapper.xml 实现


  <insert id="addUser">
        insert into user(name,sex,age,description) values(
            #{user.name},#{user.sex},#{user.age},#{user.description}
        )
    </insert>


三.一.三 验证


8df595d06876dfa2be9d117c60084ec6.png


7f3e2db2599bd24ed075e08083f7c441.png


数据库中也正常的插入了数据。(后面,数据库的结果数据,除特别案例之外,老蝴蝶均不再贴出。)


三.二 修改方法


三.二.一 测试类


 @Test
    public void updateTest(){
        //1. 构建对象
        User user=new User();
        user.setId(1); //id不存在,会添加
        user.setName("欢欢");
        user.setDescription("岳泽霖最好的朋友");
        //2. 修改方法
        userService.updateUser(user);
        log.info("修改成功,{}",user);
    }


三.二.二 Mapper接口及其相关XML文件实现


UserMapper接口


 void updateUser(@Param("user") User user);


void updateUser(@Param("user") User user);


 <update id="updateUser">
        update user set name=#{user.name},sex=#{user.sex},
        age=#{user.age},description=#{user.description}
        where id=#{user.id}
    </update>


三.二.三 验证


61ac827b03b0365f08fe7c30f4a1e26f.png




相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL Java 数据库连接
SpringBoot整合Mybatis
SpringBoot整合Mybatis
41 2
|
1月前
|
算法 Java 数据库连接
Spring+MySQL+数据结构+集合,Alibaba珍藏版mybatis手写文档
Spring+MySQL+数据结构+集合,Alibaba珍藏版mybatis手写文档
|
1月前
|
Java 数据库连接 Spring
Spring 整合mybatis
Spring 整合mybatis
26 2
|
3天前
|
安全 Java 数据库连接
Spring Boot + Security + MyBatis + Thymeleaf + Activiti 快速开发平台项目
Spring Boot + Security + MyBatis + Thymeleaf + Activiti 快速开发平台项目
14 0
|
11天前
|
Java 数据库连接 数据库
Spring日志完结篇,MyBatis操作数据库(入门)
Spring日志完结篇,MyBatis操作数据库(入门)
|
23天前
|
Java 关系型数据库 数据库连接
MyBatis-Plus介绍及Spring Boot 3集成指南
MyBatis-Plus是一个MyBatis扩展工具,旨在简化Java开发中的CRUD操作。它具有无侵入性、低损耗、强大的CRUD功能、Lambda表达式支持、主键自动生成、ActiveRecord模式、全局操作和内置代码生成器等特点。在Spring Boot 3中集成MyBatis-Plus,需在pom.xml添加依赖,排除特定版本的mybatis-spring,并用@MapperScan注解指定Mapper接口路径。此外,还介绍了如何使用MyBatis-Plus代码生成器自动生成Mapper、Model、Service和Controller层代码,以加速开发。
67 2
MyBatis-Plus介绍及Spring Boot 3集成指南
|
24天前
|
SQL Java 关系型数据库
基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用
基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用
31 2
|
24天前
|
Java 关系型数据库 MySQL
SpringBoot整合JUnit、MyBatis、SSM
SpringBoot整合JUnit、MyBatis、SSM
29 4
|
24天前
|
Java 数据库连接 数据库
Spring整合Mybatis、Spring整合JUnit
Spring整合Mybatis、Spring整合JUnit
25 1
Spring整合Mybatis、Spring整合JUnit
|
25天前
|
Java 数据库连接 数据库
小唐开始学 Spring Boot——(3)利用mybatis访问数据表
小唐开始学 Spring Boot——(3)利用mybatis访问数据表