第二节:springboot整合Mybatis(入门)

本文介绍了如何在SpringBoot项目中集成Lombok以简化代码,以及如何整合Mybatis和相关依赖,包括Mybatis-Spring-Boot-Starter、MyBatisPlus、Druid数据源。文章详细展示了从配置YAML文件、创建User实体类、定义Mapper接口到进行单元测试的全过程。
摘要由CSDN通过智能技术生成

一、Lombok安装(已安装的忽略)

Lombok项目是一个java库,它可以自动插入到编辑器和构建工具中,增强java的性能。不需要再写getter、setter或equals方法,只要有一个注解,就有一个功能齐全的构建器、自动记录变量等等。

1、先在idea中安装Lombok插件

File —> Settings —> Plugins —> 搜索Lombok
在这里插入图片描述

2、添加lombok相关依赖

<dependencies>
	<dependency>
	      <groupId>org.projectlombok</groupId>
	      <artifactId>lombok</artifactId>
	</dependency>
</dependencies>

二、整合Mybatis的核心依赖包

        <!-- mybatis 支持 SprigBoot -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>

        <!-- mysql 驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>

        <!--阿里巴巴数据源-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>

        <!--MyBatis Plus 的依赖包 ,比如可以直接使用他封装好的sql语句,selectOne等-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.2</version>
        </dependency>

三、springboot整合Mybatis

1、application.yml和项目结构

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/study-demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

    #Spring Boot 默认是不注入这些属性值的,需要自己绑定
    #druid 数据源专有配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true



在这里插入图片描述

2、User类

ps:表结构创建语句在最后

package com.gzgs.study01.web.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.Date;

@Data
@NoArgsConstructor //无参构造函数
@AllArgsConstructor//有参构造(全字段)
@Accessors(chain = true)//链式; 存取器。通过该注解可以控制getter和setter方法的形式。
@TableName("t_user")
public class User {

    @TableId(value = "user_id", type = IdType.ID_WORKER)
    private Long userId;//主键

    private Integer age;

    private String userName;

    private Date gmtCreate;//创建时间

    private Date gmtModified;//修改时间
}

3、userMapper类

package com.gzgs.study01.web.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gzgs.study01.web.entity.User;
import org.springframework.stereotype.Repository;


//我们使用的@Mapper和@MapperScan并不是spring框架的注解,未在spring容器中注册为bean;
//@Repository标签可加可不加,不加的话@Autowired的时候会爆红而已,因为@MapperScan不是spring框架的注解
public interface UserMapper extends BaseMapper<User> {

}

4、@MapperScan注解

@MapperScan("com.gzgs.study01.web.mapper")

在这里插入图片描述

四、单元测试

 //一般都会在service层调用mapper
 //这里直接使用mapper封装好的selectOne方法查询
 User user = userMapper.selectOne(new QueryWrapper<User>().eq("user_id", 1));

在这里插入图片描述

五、表创建语句

/*
 Navicat MySQL Data Transfer

 Source Server         : 本地数据库3306
 Source Server Type    : MySQL
 Source Server Version : 50735
 Source Host           : localhost:3306
 Source Schema         : study-demo

 Target Server Type    : MySQL
 Target Server Version : 50735
 File Encoding         : 65001

 Date: 04/07/2023 17:20:54
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `user_id` bigint(20) NOT NULL,
  `age` int(3) NULL DEFAULT NULL,
  `user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `gmt_create` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES (1, 18, '测试用户', '2023-07-03 18:09:53', '2023-07-04 14:43:30');
INSERT INTO `t_user` VALUES (2, 20, '测试用户2', '2023-07-04 15:10:03', '2023-07-04 15:10:03');

SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值