第四章 数据访问:MyBAtis-Plus&Druid数据源


(如果没有了解可以去我主页看看 第一至三章的内容来学习)通过前面两章的学习,我们已经对数据访问层两大核心框架JPA(Hibernate)和MyBAtis进行了学习,这两大框架一个是全自动ORM,一个是半自动ORM,且各有优势及应用场景。
  本章我们继续学习数据访问层技术:MyBAtis-Plus。MyBAtis-Plus是一个MyBAtis的增强工具,在MyBAtis的基础上只做增强不做改变,原MyBAtis的用法和功能在MyBAtis-Plus中依然可以继续使用;同时MyBAtis-Plus仅仅通过少量配置即可实现单表大部分CRUD操作,内置分页插件,复杂查询提供了条件构造器,这与JPA又非常相似。所以,MyBAtis-Plus可说是结合了JPA和MyBAtis两个框架的优点。
  本章在最后我们还会学习SpringBoot集成Druid数据源,Druid数据源是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成,功能强大,应用广泛。

4.1 Spring Boot 集成 MyBAtis-Plus

4.1.1 MyBAtis-Plus简介

  MyBAtis-Plus(简称MP)是一个 MyBAtis 的增强工具,在MyBAtis的基础上只做增强不做改变,为简化开发、提高效率而生。它继承了 MyBatis 的所有特性并加入了自己的功能,比如内置的分页插件、乐观锁插件、性能分析插件、条件构造器等等,极大地简化了 CRUD 操作,让开发者能够更专注于业务逻辑的实现。

下面是一个简单的 MyBatis-Plus 的 Java 代码示例,演示了如何使用 MyBatis-Plus 进行数据的增删改查操作。

首先,确保你的项目中已经加入了 MyBatis-Plus 的依赖。以下是一个 Maven 依赖示例:

<dependency>  
    <groupId>com.baomidou</groupId>  
    <artifactId>mybatis-plus-boot-starter</artifactId>  
    <version>你的MyBatis-Plus版本号</version>  
</dependency>

实体类(Entity)
假设我们有一个用户表 user,对应的实体类 User 如下:

import com.baomidou.mybatisplus.annotation.IdType;  
import com.baomidou.mybatisplus.annotation.TableId;  
import com.baomidou.mybatisplus.annotation.TableName;  
  
@TableName("user")  
public class User {
     
    @TableId(type = IdType.AUTO)  
    private Long id;  
    private String name;  
    private Integer age;  
    private String email;  
  
    // 省略getter和setter方法  
}

Mapper 接口
MyBatis-Plus 会根据 Mapper 接口自动生成 SQL 语句,因此通常我们不需要编写具体的 SQL 语句。

import com.baomidou.mybatisplus.core.mapper.BaseMapper;  
  
public interface UserMapper extends BaseMapper<User> {
     
    // 继承BaseMapper后,已经拥有了很多CRUD方法,如果需要特殊SQL,可以在这里扩展  
}

Service 层
在 Service 层中,我们可以注入 Mapper 接口来进行业务逻辑处理。

import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Service;  
  
@Service  
public class UserService {
     
  
    @Autowired  
    private UserMapper userMapper;  
  
    public User getUserById(Long id) {
     
        return userMapper.selectById(id);  
    }  
  
    // 其他业务逻辑...  
}

Controller 层
在 Controller 层中,我们可以调用 Service 层的方法,并返回相应的结果给前端。

import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.PathVariable;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
public class UserController {
     
  
    @Autowired  
    private UserService userService;  
  
    @GetMapping("/user/{id}")  
    public User getUserById(@PathVariable Long id) {
     
        return userService.getUserById(id);  
    }  
  
    // 其他接口...  
}

这个示例简单展示了 MyBatis-Plus 的基本使用方式,通过继承 BaseMapper 接口,你可以很方便地进行 CRUD 操作,而无需编写大量的 SQL 语句。MyBatis-Plus 还提供了很多强大的功能,如分页插件、条件构造器等,可以帮助你更高效地开发。

MyBAtis-Plus特性:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作
  • 支持Lambda形式调用:通过Lambda表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持多种数据库:支持MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer等多种数据库
  • 强大的CRUD操作:内置通用Mapper、通用Service,仅仅通过少量配置即可实现单表大部分CRUD操作,更有强大的条件构造器,满足各类使用需求
  • 内置分页插件:基于MyBAtis物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通List查询

4.1.2 Lombok简介和安装

Lombok是一个Java库,它通过注解的方式自动插入编辑器并构建工具中,从而简化Java代码。它自动化了Java对象的生成,如getter、setter、equals、hashCode、toString方法等,从而减少了样板代码的数量,使得代码更加简洁。Lombok通过注解的方式,在编译时期自动生成这些方法,而不需要开发者手动编写。

Lombok的安装
Lombok的安装主要涉及两个步骤:

  1. 添加Lombok依赖:在你的项目中添加Lombok的Maven或Gradle依赖。
  2. IDE插件安装:大多数流行的Java IDE(如IntelliJ IDEA, Eclipse, NetBeans等)都支持Lombok,但需要安装相应的插件。

Maven依赖
在pom.xml文件中添加Lombok的Maven依赖:

<dependency>  
    <groupId>org.projectlombok</groupId>  
    <artifactId>lombok</artifactId>  
    <version>最新版本号</version>  
    <scope>provided</scope>  
</dependency>

请确保将最新版本号替换为Lombok的当前版本。

Gradle依赖
在build.gradle文件中添加Lombok的Gradle依赖:

dependencies {  
    compileOnly 'org.projectlombok:lombok:最新版本号'  
    annotationProcessor 'org.projectlombok:lombok:最新版本号'  
    testCompileOnly 'org.projectlombok:lombok:最新版本号'  
    testAnnotationProcessor 'org.projectlombok:lombok:最新版本号'  
}

同样,请将最新版本号替换为Lombok的当前版本。

IDE插件安装
以IntelliJ IDEA为例,安装Lombok插件的步骤如下:

  1. 打开IDEA,进入File -> Settings(Windows)或IntelliJ IDEA -> Preferences(Mac)。
  2. 在设置窗口中,选择Plugins。
  3. 在Marketplace标签页中搜索Lombok。
  4. 找到Lombok插件后,点击Install按钮进行安装。
  5. 安装完成后,重启IDEA以使插件生效。

Java代码示例
使用Lombok注解的Java类示例:

import lombok.Data;  
  
@Data // 自动生成getter、setter、equals、hashCode和toString方法  
public class User {
     
    private Long id;  
    private String name;  
    private Integer age;  
    // 无需手动编写getter、setter等方法  
}  
  
public class Main {
     
    public static void main(String[] args) {
     
        User user = new User();  
        user.setId(1L);  
        user.setName("John Doe");  
        user.setAge(30);  
  
        System.out.println(user.toString()); // 自动生成的toString方法  
    }  
}

在这个例子中,@Data注解自动为User类生成了getter、setter、equals、hashCode和toString方法,从而减少了样板代码。在Main类中,我们可以直接调用这些方法而无需手动编写它们。

4.1.3 快速上手

MyBatis-Plus 是一个 MyBatis 的增强工具,它简化了 CRUD 操作,提供了许多便利的功能,如内置的分页插件、乐观锁插件、自动填充字段等。下面是一个简单的 MyBatis-Plus 快速上手的 Java 代码示例,展示如何使用 MyBatis-Plus 进行数据库操作。

  1. 添加依赖
    首先,确保你的项目中已经加入了 MyBatis-Plus 的依赖。以下是一个 Maven 依赖示例:
<dependency>  
    <groupId>com.baomidou</groupId>  
    <artifactId>mybatis-plus-boot-starter</artifactId>  
    <version>你的MyBatis-Plus版本号</version>  
</dependency>  
<!-- 如果你使用的是 Spring Boot,可能还需要添加数据库连接池等依赖 -->  
<dependency>  
    <groupId>com.h2database</groupId>  
    <artifactId>h2</artifactId>  
    <scope>runtime</scope>  
</dependency>

请将 你的MyBatis-Plus版本号 替换为当前最新的或你项目中指定的 MyBatis-Plus 版本号。

  1. 配置 MyBatis-Plus
    在 Spring Boot 的 application.properties 或 application.yml 文件中配置 MyBatis-Plus 和数据库连接信息。
# application.properties 示例  
spring.datasource.url=jdbc:h2:mem:testdb  
spring.datasource.driverClassName=org.h2.Driver  
spring.datasource.username=sa  
spring.datasource.password=  
spring.jpa.show-sql=true  
  
# MyBatis-Plus 配置  
mybatis-plus.mapper-locations=classpath:/mapper/**/*.xml  
mybatis-plus.type-aliases-package=com.example.demo.entity  
mybatis-plus.global-config.db-config.id-type=auto

注意:上面的 mybatis-plus.mapper-locations 和 mybatis-plus.type-aliases-package 需要根据你的项目结构调整。

  1. 实体类
    创建一个实体类,使用 MyBatis-Plus 提供的注解来标记字段。
package com.example.demo.entity;  
  
import com.baomidou.mybatisplus.annotation.IdType;  
import com.baomidou
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值