我究竟是那个地方不对呢?
来源:3-5 初始化工具类MyBatisUtils
weixin_慕设计1061308
2021-08-14 01:14:48
这是老师的配置文件他并没有useSSL=false;
这是我在csdn搜索查到需要加useSSL=false;我尝试了一下后面并没有报错了
-------------------------------------------------------------------------------------
然后我想问我是按照视频中操作的代码如下(我看了几遍回放应该没语法错误如有请老师指出)
相关代码:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.imooc</groupId>
<artifactId>mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
相关代码:
package com.imooc.mybatis;
import com.imooc.mybatis.utils.MyBatisUtils;
import javafx.fxml.FXML;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
//JUNIT单元测试类
public class MyBatisTestor {
@Test
public void testSqlSessionFactory() throws IOException {
//利用Reader加载classpath下的mybatis-config.xml核心配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//初始化SqlSessionFactory对象,同时解析mybatis-config.xml文件
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
System.out.println("SessionFactory加载成功");
SqlSession sqlSession = null;
try {
//创建SqlSession对象 SqlSession是JDBC的扩展类,用于数据库交互
sqlSession = sqlSessionFactory.openSession();
//创建数据库链接(测试用)
Connection connection = sqlSession.getConnection();
System.out.println(connection);
} catch (Exception e) {
e.printStackTrace();
}finally {
if (sqlSession != null) {
//如果type="POOLED",代表使用连接池,close则是将连接回收到连接池中
//如果type="UNPOOLED"代表直连,close则会调用Connection.close()方法关闭链接
sqlSession.close();
}
}
}
@Test
public void testMyBatisUtils() throws Exception {
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.openSession();
Connection connection = sqlSession.getConnection();
System.out.println(connection);
} catch (Exception e) {
throw e;
}finally {
MyBatisUtils.closeSession(sqlSession);
}
}
}
相关代码:
package com.imooc.mybatis.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
/*
MyBatisUtils工具类,创建全局唯一的SqlSessionFactory对象
*/
public class MyBatisUtils {
//利用static 属于类不属于对象且全局唯一
private static SqlSessionFactory sqlSessionFactory = null;
//利用静态块 在初始化类时实例化sqlSessionFactory
static {
Reader reader = null;
try {
reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
//初始化错误时 通过抛出异常ExceptionInInitial
throw new ExceptionInInitializerError(e);
}
}
/*
*openSession创建一个新的SqlSession对象
*@return SqlSession对象
*/
public static SqlSession openSession() {
return sqlSessionFactory.openSession();
}
/*
释放一个有效的SqlSession对象
@param session 释放SqlSession
*/
public static void closeSession(SqlSession session) {
if (session != null) {
session.close();
}
}
}
相关代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- environments default 设置默认指向数据库 -->
<environments default="dev">
<!--配置环境 不同的环境不同的ID名字-->
<environment id="dev">
<!--采用JDBC方式对数据库事物进行commit/rollback -->
<transactionManager type="JDBC"></transactionManager>
<!--采用连接池方式管理数据库链接-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/babytun?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
<environment id="prd">
<!--采用JDBC方式对数据库事物进行commit/rollback -->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.1.155:3306/babytun?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
如果没有加 useSSL=false
问题描述:
Sat Aug 14 01:07:23 CST 2021 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
尝试过的解决方式:
我虽然经过csdn查询我已经没有报错但是我想知道 我根据视频里做(没有加useSSL)为啥会报错呢,虽然我知道useSSL是关于数据库属性设置,但是这东西的意义是啥还有我想知道我和视频有啥区别我错在哪了 为啥视频里没报错我报错了
1回答
好帮手慕阿园
2021-08-14
同学你好,这里应该只是个警告,请问下同学mysql版本是几的版本,这里跟mysql版本有关,如果同学的需要设置useSSL=false,则在链接上添加即可
祝学习愉快~
相似问题
回答 2