SpringBoot2.0学习笔记:(九) Spring Boot中集成Mybatis与Druid

2023-11-02

一、项目的搭建

Druid对Spring boot做了很好的适配,所有的工作都只需要在配置文件中完成。

具体的Druid在Spring Boot中的配置可以看:GitHub文档

首先看一下项目引入的jar包:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

在Spring Boot项目使用Druid需要导入的jar包是druid-spring-boot-starter

很简单,项目只需要导入

mybatis-spring-boot-starter

mysql-connector-java

druid-spring-boot-starter

spring-boot-starter-web

这四个jar包就可以了。

之后看一下项目目录结构:

在这里插入图片描述

我使用的是yml格式的配置文件,因为配置太多了,这样写简单一点=-=。

controller、model、dao、这三个包内的Java文件勿用多说,说一下resoucres目录下的mybatis文件夹,这是我定义的Mybatis的映射文件所处的位置,这个路径需要在配置文件中配置一下。

mybatis:
  mapper-locations: classpath:mybatis/*.xml

现在具体看一下application.yml文件:

spring:
  datasource:
    druid:
      # JDBC配置
      url: jdbc:mysql://localhost:3306/world?useUnicode=true&characterEncoding=UTF-8
      username: root
      password: root
      driver-class-name: com.mysql.jdbc.Driver

      # 连接池配置
      # 配置初始化大小、最小、最大
      initial-size: 5
      max-active: 20
      min-idle: 5
      # 获取连接等待超时时间
      max-wait: 60000
      pool-prepared-statements: true
      #
      validation-query: SELECT 1
      test-on-borrow: false
      test-on-return: false
      test-while-idle: true
      # 间隔多久进行一次检测,检测需要关闭的空闲连接
      time-between-eviction-runs-millis: 60000
      # 一个连接在连接池中最小的生存时间
      min-evictable-idle-time-millis: 300000
      max-pool-prepared-statement-per-connection-size: 20
      # 合并多个DruidDataSource的监控数据
      use-global-data-source-stat: true
      filters: stat
      filter:
      # 慢SQL记录(sql语句执行时间超过某个界限就记录下来)
        stat:
          slow-sql-millis: 200
          log-slow-sql: true

      # 监控配置
      # Druid WebStatFilter配置
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: /druid/*,*.gif,*.png,*.jpg,*.html,*.js,*.css,*.ico
      # Druid StatViewServlet配置
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        # 登录监控界面的用户名以及密码,登录url为localhost:8080/druid
        login-username: admin
        login-password: admin
        allow:
        deny:
mybatis:
  # 指定mybatis映射文件的位置
  mapper-locations: classpath:mybatis/*.xml
  configuration:
  	# 开启驼峰命名转换
    map-underscore-to-camel-case: true

这就是全部的配置了,其中有关于Druid的配置可以参照上面给出的超链接去GitHub上详细了解。

最后还不能忘了的是,在启动文件SpringBootDruidApplication中加入@MapperScan注解,指定要扫描的Mapper类的路径。


@MapperScan(value = "com.baiding.springboot.dao")
@SpringBootApplication
public class SpringBootDruidApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringBootDruidApplication.class, args);
	}
}

以上就是SpringBoot2.0.x中关于Mybatis与Druid的全部配置了,当然这只是很简陋的配置,具体的扩展可以参看官方文档。下面看一下效果:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这里的Druid监控界面访问:localhost:8080/druid就可以

下面是Druid的SQL监控:

在这里插入图片描述

下面是Druid的URI监控:

在这里插入图片描述

问题解惑

1. Mybatis查出了数据,但无法完成赋值

比如,你在数据库中查出了一条数据赋值给对象,对象的id成功赋值了,但是他的userName是个空值。这里就是驼峰命名 的坑了,当你在Mybatis映射文件中select语句直接使用resultType而不是用resultMap返回数据,并且对象中采用驼峰命名(userName)数据库中使用user_name时,就会出现这个 情况:

<select id="getUser" parameterType="long" 				 resultType="com.baiding.springboot.model.User">
    SELECT * FROM user WHERE id = #{id}
</select>

所以解决办法就是在配置文件中开启驼峰命名:

mybatis:
  configuration:
    map-underscore-to-camel-case: true

2. Druid连接Mysql数据库一直提示密码错误

我的mysql数据库的密码一开始是一串纯数字,例如:033453,但是启动项目的时候一直报密码错误,之后我跟踪了一下配置文件中数据库连接属性的赋值过程,跟踪到DruidAbstractDataSourcesetPassword方法,

public void setPassword(String password) {
    if (StringUtils.equals(this.password, password)) {
        return;
    }

    if (inited) {
        LOG.info("password changed");
    }

    this.password = password;
}

发现在这里得到的password已经变成了另外一串数字了。很疑惑,但不明白具体原因,希望有大手子可以告知。

之后,我改成了连接虚拟机上另外的 一个数据库,密码也改为了字符串,这样启动就没问题了。

最后附上项目地址:spring-boot-druid

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot2.0学习笔记:(九) Spring Boot中集成Mybatis与Druid 的相关文章

  • VMware虚拟机安装Ubuntu详细教程

    目录 1 VM和Ubuntu下载 2 VMware安装Ubuntu 3 更改Ubuntu软件源 4 Windows与Ubuntu跨系统复制粘贴 5 创建共享文件夹 1 VM和Ubuntu下载 Ubuntu系统下载官方链接 Download
  • Linux磁盘管理好用且常用的命令!

    在Linux使用过程中 时间长了就会出现磁盘不足的问题 进而需要管理自己的磁盘 而且Linux磁盘管理好坏直接关系到整个系统的性能问题 那么Linux磁盘管理常用命令有哪些 这篇文章为大家介绍一下常用的三个命令 Linux磁盘管理常用三个命

随机推荐

  • C++ typeid实现原理

    最近看了boost any类源码 其实现主要依赖typeid操作符 很好奇这样实现的时间和空间开销有多大 决定探一下究竟 VS2008附带的type info类只有头文件 没有源文件 声明如下 cpp view plain copy cla
  • Java操作es 查询时 [search_phase_execution_exception] all shards failed

    co elastic clients elasticsearch types ElasticsearchException es search failed search phase execution exception all shar
  • windows内存管理

    地址空间 系统中所有可用的内存地址 物理内存 硬件中真实存在的存储空间 虚拟地址空间 对于一个程序来说可以使用所有的内存空间中的地址 但实际往往不能做到和物理地址一 一对应 所以需要 转换操作 将程序中的虚拟地址转换为硬盘中的真实地址 分页
  • node-red学习一,设置http get请求和设置response响应

    文章目录 一 打开node red 二 设置get请求 2 1 设置http模块参数 2 2 设置 debug 方便调试 三 设置 response 参数 四 运行测试 4 1 携带参数进行测试 Node RED背景介绍 Node Red是
  • Java设计模式——类之间的关系

    1 继承关系 泛化 类与子类的关系 指一个类继承另外的一个类 2 实现关系 一个类可以实现多个接口 实现所有接口的功能 3 依赖关系 类B作为类A方法中的局部变量或者参数出现 表示A依赖B 4 关联关系 类B作为类A中的成员变量出现 表示A
  • 神经元的集体行为:大尺度脑活动的动力学模型

    来源 集智俱乐部 https mp weixin qq com s X88lG7rFhIFlpCJ2jVMLtg 作者 彭崧峻 校对 梁金 编辑 邓一雪 封面 Sergey Fedotov 排版 光影 导语 Introduction 大脑由
  • 4个自由度焊接机器人毕业设计,含焊接机器人装配图,机器人手腕,工作台,开题报告,说明书

    摘 要 随着科技的发展和工业需求的增加 焊接技术在工业生产中所占据的分量越来越大 而且焊接技术的优良程度直接影响着零件或产品的质量 国内焊接机器人应用虽已具有一定规模 但与我国焊接生产总体需求相差甚远 因此 大力研究并推广焊接机器人技术势在
  • keep-alive

    keep alive的概念 keep alive 是 Vue 的内置组件 当它包裹动态组件时 会缓存不活动的组件实例 而不是销毁它们 和 transition 相似 keep alive 是一个抽象组件 它自身不会渲染成一个 DOM 元素
  • 折半查找和二叉排序树

    1 折半查找和二叉排序树的时间性能分析 从查找过程看 二叉排序树与二分查找相似 就平均时间性能而言 二叉排序树上的查找和二分查找差不多 但不完全一致 折半查找的性能分析可以用二叉判定树来衡量 平均查找长度和最大查找长度都是O logn 二叉
  • android 开发时出现 Please ensure that adb is correctly located at '...\adb.exe' and can be executed

    android 开发时出现 Please ensure that adb is correctly located at adb exe and can be executed 分类 android 2013 10 21 14 51 446
  • 解决图片太大溢出问题、CSS 限制图片最大宽度、图片按比例自动缩放

    在网上找了很久 这里保存一下 方便以后使用 实现思路很简单 改造js代码 既然图片很大 那么我们先用最经典的限制width的方法限制大图的宽度 但是小图怎么办 小图我们用onload的方法再缩小 就这么搞定了 完美代码如下 对应的JS代码
  • 【chatgpt谈前端三大主流框架】React、Vue和Angular的优缺点及如何选择

    文章目录 React 优点 缺点 Vue 优点 缺点 Angular 优点 缺点 总结 脑筋急转弯小程序抢先体验 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 vue2从入门到精
  • JavaWeb Maven 所需jar包

    JavaWeb Maven 所需jar包
  • esp32cam 服务端远程视频方案

    esp32cam 服务端远程视频方案 现有功能更完善的服务端视频方案 开源地址 https gitcode net qq 26700087 lightcam 功能更全的esp32监控 部署起来会麻烦一些 但功能更加完善 说明 本方案为esp
  • FPGA的基础结构

    深入理解 FPGA 的基础结构 知乎 zhihu com 原理和结构 FPGA的构成要素 逻辑要素 逻辑块 Logic Block LB 用于实现逻辑电路 可编程逻辑的逻辑块的实现方式有乘积项 查找表 数据选择器 Multiplexer M
  • 搭建三节点的kubernetes(K8S)集群

    Kubernates安装配置文档 先决条件 1 需要的yaml文件所在的github地址如下 https github com luckylucky421 kubernetes1 17 3 tree master 2 下文里初始化k8s集群
  • Jupyter notebook快速入门教程

    本篇将给大家介绍一款超级好用的工具 Jupyter notebook 为什么要介绍这款工具呢 如果你想使用Python学习数据分析或数据挖掘 那么它应该是你第一个应该知道并会使用的工具 它很容易上手 用起来非常方便 是个对新手非常友好的工具
  • Matlab快速创建矩阵的方法(创建特殊矩阵)

    在matlab的使用过程中经常会需要用到矩阵 有时想要创建一些数据比较多的矩阵 对矩阵的内容要求可能并不高或者要创建一些特殊矩阵 下面将提供一些matlab内部提供的一些快速创建矩阵的方法 1 创建单位矩阵 eye n 创建n n的单位矩阵
  • GitHub托管HTML页面,让其他人轻松访问自己的页面

    如何通过GitHub来托管自己写的HTML页面 能够轻松让其他人访问你的页面 还可以通过GitHub让多人参与进来你的项目 以下是详细步骤 1 创建账户 登陆https github com 注册成功 1 https guides gith
  • SpringBoot2.0学习笔记:(九) Spring Boot中集成Mybatis与Druid

    一 项目的搭建 Druid对Spring boot做了很好的适配 所有的工作都只需要在配置文件中完成 具体的Druid在Spring Boot中的配置可以看 GitHub文档 首先看一下项目引入的jar包