MyBatis-Plus集成Druid环境搭建的详细教程

下面我将为你介绍Mybatis-Plus集成Druid环境搭建的详细教程,包括环境搭建、配置和代码演示。首先,我们需要明确一下什么是Mybatis-Plus和Druid。

什么是MyBatis-Plus和Druid?

MyBatis-Plus

MyBatis-Plus(简称MP)是一个在MyBatis框架基础上的增强工具,省去了很多重复性的代码,提供了更为简洁的CRUD操作以及一些常见的操作,如分页、排序、批量插入/更新等。使用MyBatis-Plus可以极大的提高开发效率。

Druid

Druid是一款高性能、可扩展性强、入侵性小的Java数据库连接池。目前使用较广泛,被广泛用于 Alibaba、蚂蚁金服等大公司的项目中。

环境搭建

要使用MyBatis-Plus,我们需要先引入Mybatis依赖。在pom.xml中加入以下dependency:

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.3.2</version>
</dependency>

然后需要引入Druid的相关依赖。在pom.xml中加入以下dependency:

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid-spring-boot-starter</artifactId>
  <version>1.2.4</version>
</dependency>

配置

数据库配置

在application.yml中配置数据库连接

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: root

Mybatis-Plus配置

在application.yml中添加如下配置:

mybatis-plus:
  typeAliasesPackage: com.example.demo.entity
  mapperLocations: classpath:/mapper/*.xml
  global-config:
    db-config:
      id-type: auto

Druid配置

Druid提供了很多配置,可以用于监控、日志等。在application.yml中添加以下配置:

spring:
  datasource:
    druid:
      # 配置数据源基础信息
      url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false
      username: root
      password: root

      # 配置统计监控的Filter
      filters: stat

      # 配置初始化大小、最小、最大连接数
      initial-size: 10
      min-idle: 10
      max-active: 100
      # 配置获取连接等待超时的时间
      max-wait: 60000
      # 配置检测需要关闭的空闲连接间隔时间
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1
      validation-query-timeout: 10000
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      # 配置监控统计拦截的filters
      filters: stat,wall,logback
      # 配置DruidDataSource监控
      filter:
        stat:
          # 开启监控统计功能
          enabled: true
          # SQL合并配置,合并多个取值为true的操作为一个,提高监控数据精度
          merge-sql: true

        # 防御SQL注入
        wall:
          enabled: true
          # 过滤多余的注释、不安全的语句等
          config:
            deleteAllow: false
            dropTableAllow: false
            truncateAllow: false
            updateWhereNoneCheck: true
            selectWhereAlwayTrueCheck: true
            selectHavingAlwayTrueCheck: false
            selectUnionCheck: true
            selectIntoOutfileCheck: true
            selectIntoDumpFileCheck: true
            callAllow: true
            multiStatementAllow: true
            commentAllow: true
            strictSyntaxCheck: true
            schemaCheck: false
            seqAllow: true
            alterTable: true
            notLikeAllow: false
          # 对被认为是攻击的SQL抛出异常,而不是简单的把它们阻断掉
          wall-filter:
            stat:
              merge-sql: true
              slow-sql-millis: 5000
              log-slow-sql: true
              slow-sql-count: 1
        logback:
          # 配置日志打印
          enabled: true
          connection-log-enabled: false
          statement-log-enabled: false
          resultset-log-enabled: false

代码演示

Entity定义

假设我们有一个User实体,定义如下:

@Data
public class User {

    private Long id;

    private String username;

    private String password;

    private String email;

    private String phone;

    private Integer age;

    private Integer status;

}

Mapper定义

使用Mybatis-Plus的话,我们只需要定义一个UserMapper接口即可,如下:

public interface UserMapper extends BaseMapper<User> {

}

Service定义

定义一个UserService接口和其实现类UserServiceImpl,代码如下:

public interface UserService extends IService<User> {
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

Controller定义

最后,我们来定义一个UserController,定义如下:

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

    @Autowired
    private UserService userService;

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

    @PostMapping
    public boolean save(@RequestBody User user) {
        return userService.save(user);
    }

    @PutMapping
    public boolean updateById(@RequestBody User user) {
        return userService.updateById(user);
    }

    @DeleteMapping("{id}")
    public boolean deleteById(@PathVariable Long id) {
        return userService.removeById(id);
    }

}

现在我们就可以通过调用这些接口来实现CRUD操作了。例如,我们发送一个POST请求到/user,请求body为:

{
  "username": "test",
  "password": "test",
  "email": "test@test.com",
  "phone": "123456789",
  "age": 18,
  "status": 1
}

这样就可以在数据库中保存一条用户信息了。

示例2:

public int updateAgeByIdAndUsername(Integer age,String username,Long id) {
        UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
        userUpdateWrapper.eq("username",username).eq("id",id).set("age",age);
        return userMapper.update(new User(), userUpdateWrapper);
    }

以上就是MyBatis-Plus集成Druid环境搭建的详细教程。希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis-Plus集成Druid环境搭建的详细教程 - Python技术站

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

相关文章

  • 多个jsp页面共享一个js对象的超级方法

    要实现多个JSP页面共享一个JS对象的超级方法,可以使用以下步骤: 在JSP页面中引入公共的JS文件。 <script src="common.js"></script> 定义公共的JS对象,可以将它定义为全局变量。 var commonObj = { name: "Tom", age: 18,…

    Java 2023年6月15日
    00
  • Java8排序stream.sorted()的使用

    当我们需要对一个List或数组等集合进行排序时,我们可以使用Java8中的Stream.sorted()方法进行排序。下面就详细讲解一下Java8排序Stream.sorted()的使用攻略。 一、Stream的sorted()方法 Stream.sorted()方法是一个中间操作,它返回一个排序好的流,可以对元素进行自然排序或指定Ordering排序。 下…

    Java 2023年5月26日
    00
  • java生成图片验证码功能

    下面是详细讲解”Java生成图片验证码功能”的完整攻略: 1. 确定需求 首先,我们需要明确这个功能的需求,即在Java Web应用中生成一个随机的图片验证码,以用于用户填写和校验,防止机器人攻击或恶意提交。 2. 添加依赖 接下来,我们需要添加相关的依赖。Java中生成图片验证码需要用到jcaptcha这个开源工具包,我们可以在pom.xml中添加它的依赖…

    Java 2023年6月15日
    00
  • Springboot的spring-boot-maven-plugin导入失败的解决方案

    在使用Springboot开发时,可能会出现使用spring-boot-maven-plugin插件导入失败的情况。下面是解决方案的完整攻略: 1. 确认maven配置文件 在使用spring-boot-maven-plugin插件时,首先需要确认你的maven配置文件是否正确。在你的maven配置文件(settings.xml)中添加以下配置: <p…

    Java 2023年5月19日
    00
  • Android实现IOS相机滑动控件

    下面我会详细讲解在Android平台上实现类似IOS相机滑动控件的完整攻略。实现该控件需要涉及到自定义控件的开发和手势识别等技能。 一、基本原理 自定义滑动控件:为了实现类似IOS相机的滑动效果,需要将Android的默认控件ScrollView转换为自定义控件,在该自定义控件中重写touch事件以及scroll事件,实现手势识别和滑动效果。 手势识别:在自…

    Java 2023年5月26日
    00
  • Spring Native打包本地镜像的操作方法(无需通过Graal的maven插件buildtools)

    Spring Native是近期才发布的一个新特性,它的主要功能就是将Spring应用程序打包为本地镜像,打包完成后,我们就可以将这个本地镜像部署到不同的环境上,比如Docker、Kubernetes等。 下面是使用Spring Native打包本地镜像的具体步骤: 配置Java环境 首先需要确保已经安装了JDK11版本及以上,然后安装GraalVM相关组件…

    Java 2023年5月19日
    00
  • Java多线程提交按照时间顺序获取线程结果详解流程

    Java多线程提交按照时间顺序获取线程结果,是一种常见的并发处理方式。其流程大致可以分为任务提交、线程池处理、结果收集三个过程。 任务提交 在Java中,可以通过Executors提供的静态方法创建线程池,以便统一管理和复用线程资源,同时避免频繁创建线程的性能开销。 ExecutorService executor = Executors.newFixedT…

    Java 2023年5月19日
    00
  • Java解码H264格式视频流中的图片

    针对“Java解码H264格式视频流中的图片”的需求,我整理了以下完整攻略: 确定准备工作 了解H.264编解码标准及相关概念(可以参考视频编解码入门知识); 熟悉Java开发语言以及常用的流处理库,如Netty、I/O等; 确定H.264格式视频流的来源和传输方式。 解码H.264视频流 接收H.264视频流; 使用H.264解码器库,例如h264lib、…

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