关于MyBatis连接MySql8.0版本的配置问题

yizhihongxing

关于MyBatis连接MySql8.0版本的配置问题,主要需要注意以下几点:

1. 修改连接驱动

MySql8.0版本的密码加密方式发生了变化,MyBatis默认使用的连接驱动不支持新版的密码加密方式,所以我们需要手动更改MyBatis使用的连接驱动为新版的驱动。

在maven项目中,可以在pom.xml文件中引入新的驱动依赖,例如:

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.21</version>
</dependency>

如果是非maven项目,则需要手动将新版驱动放入项目的classpath下,并修改MyBatis配置文件中的连接驱动为新版的驱动,例如:

<property name="driver" value="com.mysql.cj.jdbc.Driver"/>

2. 修改连接URL和参数

MySql8.0版本的连接URL和参数也发生了变化,我们需要将MyBatis配置文件中的连接URL和连接参数修改为新版的连接URL和参数。

新版连接URL格式为:

jdbc:mysql://host:port/database?参数列表

其中,参数列表可以根据需要添加或修改,例如:

url=jdbc:mysql://localhost:3306/mydatabase?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=convertToNull

注意,MySql8.0版本设置了SSL默认校验,所以需要将连接参数中的useSSL设置为false,否则会抛出SSL异常。

示例1

接下来,我们来看一个使用MyBatis连接MySql8.0版本的示例。

假设现在我们有一个Student表,包含id、name、age三个字段,我们需要查询该表的所有记录。

首先,我们需要在pom.xml文件中引入新版的MySql驱动依赖,如下所示:

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.21</version>
</dependency>

然后,我们需要在MyBatis配置文件中添加连接池配置,并修改连接URL和参数,如下所示:

<dataSource type="POOLED">
   <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
   <property name="url" value="jdbc:mysql://localhost:3306/mydatabase?serverTimezone=Asia/Shanghai&amp;useSSL=false"/>
   <property name="username" value="root"/>
   <property name="password" value="123456"/>
</dataSource>

最后,我们就可以编写Mapper接口和SQL语句来查询Student表了,例如:

public interface StudentMapper {
   @Select("select id, name, age from Student")
   List<Student> selectAll();
}

示例2

除了在MyBatis配置文件中直接设置连接URL和参数之外,我们还可以使用MyBatis提供的DataSource和Properties对象来动态设置连接URL和参数,这样可以更加灵活地管理连接信息。

这里,我们使用Properties对象来设置连接信息,示例代码如下:

public class MyDataSourceFactory extends UnpooledDataSourceFactory {
   public MyDataSourceFactory() {
      Properties props = new Properties();
      props.setProperty("driver", "com.mysql.cj.jdbc.Driver");
      props.setProperty("url", "jdbc:mysql://localhost:3306/mydatabase");
      props.setProperty("username", "root");
      props.setProperty("password", "123456");
      props.setProperty("useSSL", "false");
      props.setProperty("serverTimezone", "Asia/Shanghai");
      // 设置更多参数...
      setProperties(props);
   }
}

通过MyDataSourceFactory来创建DataSource对象,我们就可以动态设置连接信息,示例代码如下:

<dataSource type="com.example.MyDataSourceFactory">
   <!-- 可以不设置参数,因为已经在MyDataSourceFactory中设置了 -->
</dataSource>

这种方式可以更好地封装连接信息,使得项目更加可维护和可扩展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于MyBatis连接MySql8.0版本的配置问题 - Python技术站

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

相关文章

  • Redis 根据key获取所有 HashKey

    前一段时间,做项目的时候遇到一个问题,就是如果缓存的时候使用 HashKey,那么如何能通过key获取所有的HashKey的值,通过百度发现没有直接答案,没办法就看了下redis的使用,通过查找发现有“entries”方法可以做到,接下来我们看具体代码。 import java.util.List; /** * @Package com.ywtg.commo…

    Redis 2023年4月11日
    00
  • Windows下MySQL安装配置方法图文教程

    下面是Windows下MySQL安装配置方法图文教程的完整攻略: 准备工作 在安装前,我们需要准备以下两个文件: MySQL安装包,下载地址为:https://dev.mysql.com/downloads/mysql/ MySQL Workbench工具,下载地址为:https://dev.mysql.com/downloads/workbench/ 步骤…

    database 2023年5月22日
    00
  • Redis不仅仅是缓存,还是……

    当谈到Redis时,最常听到的词就是“缓存”。实际上,Redis不仅仅是缓存,还有其他许多强大的用例。本文将探讨Redis所能提供的其他功能,并通过示例展示Redis的多种用途。 Redis不仅仅是缓存 1. 数据库 虽然Redis常被视为键值对缓存,但它也可以用作完整的NoSQL数据库。与其他NoSQL数据库不同,Redis内存非常快,并且重要的是它能够存…

    database 2023年5月19日
    00
  • SQL 依据特定时间单位检索数据

    要依据特定时间单位检索数据,需要使用SQL的日期函数和日期格式化函数。下面是SQL检索数据的完整攻略: 1. 使用DATE_FORMAT函数格式化日期 在SQL中,使用DATE_FORMAT()函数将日期值格式化为一个指定的格式。该函数接受两个参数:DATE_FORMAT(date,format),其中date是日期值,format是格式化的字符串参数。下面…

    database 2023年3月27日
    00
  • 第五部分(二) 数据存储(关系型数据库:MySQL存储方式)

    一 关系型数据库存储关系型数据库是基于关系模型的数据库,而关系模型是通过二维表来保存的,所以它的存储方式就是行列组成的表,每一列是一个字段,每一行是一条记录。表可以看作某个实体的集合,而实体之间存在联系,这就需要表与表之间的关联关系来体现,如主键外键的关联关系。多个表组成一个数据库,也就是关系型数据库。关系型数据库有多种,如SQLite、MySQL、Orac…

    MySQL 2023年4月13日
    00
  • NoSQL和Redis简介及Redis在Windows下的安装和使用教程

    NoSQL和Redis简介 NoSQL简介 NoSQL(Not Only SQL)是一种非关系型数据库。相较于关系型数据库,NoSQL数据库更适用于海量数据、高并发读写和查询的应用场景,具有可扩展性、高效性、易扩展和开放源码的优点。 NoSQL数据库按照数据存储模型分类,主要包括如下几个类型:键值存储型(如Redis)、文档型(如MongoDB)、列存储型(…

    database 2023年5月22日
    00
  • 使用Docker运行SQL Server的实现

    下面我将为你详细讲解如何使用Docker运行SQL Server的实现,包括以下几个步骤: 1. 下载Docker镜像 首先,需要从Docker Hub上下载SQL Server的镜像。可以通过以下命令获取: docker pull mcr.microsoft.com/mssql/server:2019-latest 这个命令会从Docker Hub上下载m…

    database 2023年5月22日
    00
  • Python实现的爬取豆瓣电影信息功能案例

    Python实现的爬取豆瓣电影信息功能攻略 1. 前言 随着互联网技术的快速发展,我们可以通过Python编写爬虫程序轻松地获取各种网站上的数据。本次攻略将教你如何使用Python爬虫爬取豆瓣电影的信息。 2. 爬虫流程 2.1 网页分析 在进行爬虫之前,我们首先需要对目标网站的页面结构进行分析。我们以豆瓣电影首页(https://movie.douban.…

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