MyBatis与JDBC连接数据库所使用的url之间的差异

摘要:
在线搜索解决方案后,我发现url中的“&”符号应该写成“&”在mybatis的配置文件中,修改的url如下:然后您可以正常连接。鉴于1中的错误,当尝试使用JDBC连接到MySQL时,请按如下方式连接:@TestpublicvoidtestJDBC(){Connectionconn=null;try{StringuserName=“root”;StringpassWord=“password@password“;StringjdbcUrl=”jdbc:mysql://localhost:3306/mybatis?

在Windows7 系统上安装了MySQL 8.0,然后创建Maven工程,配置pom.xml文件,添加了如下依赖:

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>

(1)在mybatis-config.xml中,配置数据库连接环境:

<environments default="development">
<environment id="development">
<transactionManager type="JDBC" >
<property name="" value="" />
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="password@password" />
</dataSource>
</environment>
</environments>

运行测试函数进行连接测试,出现如下错误提示:

org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 21; columnNumber: 102; 对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾。

上网搜索解决方案,才知道 mybatis 的配置文件中,这里 url 中的 '&' 符号应当写成 '&amp;' ,修改后的 url 如下:

<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=UTC" />

这样就可以正常连接了。

(2)鉴于1中的错误,尝试使用JDBC连接MySQL时,如下进行连接:

@Test
    public void testJDBC()
    {
        Connection conn = null;
        try
        {
            String userName = "root";
            String passWord = "password@password";
            String jdbcUrl = "jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=UTC";
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection(jdbcUrl, userName, passWord);
            String sql = "select id,countryname,countrycode from country";
            PreparedStatement pstmt = conn.prepareStatement(sql);
            ResultSet rs = pstmt.executeQuery();
            while (rs.next())
            {
                int id = rs.getInt("id");
                String countryname = rs.getString("countryname");
                String countrycode = rs.getString("countrycode");
                System.out.println(id + "	" + countryname + "	" + countrycode);
            }
            pstmt.close();
        }
        catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        finally
        {
            System.out.println("Game Over!");
        }
    }

运行测试函数,结果出现如下错误:

java.sql.SQLNonTransientConnectionException: Cannot load connection class because of underlying exception: com.mysql.cj.exceptions.WrongArgumentException: Malformed database URL, failed to parse the connection string near ';characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=UTC'.

尝试修改 url ,将 '&amp;' 改成 '&' , 结果就运行正常了,说明 JDBC 方式连接 MySQL 不需要对 '&' 进行转义。

特此记之。

免责声明:文章转载自《MyBatis与JDBC连接数据库所使用的url之间的差异》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇23.2.2 使用bool类型进行判断异常:Error: Aesthetics must either be length one, or the same length as the dataProblems:AData下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Window 环境下SonarQube的安装与部署

SonarQube 简介 Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。 Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。 支持java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。 Sonar可以从以下七个维度检测代码质量,而作...

Java之MyBatis

MyBatis中文文档:https://mybatis.org/mybatis-3/zh/index.htmlMyBatis是一款优秀的持久化框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动配置参数以及结果集。MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO(Plain...

SSH框架总结

首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。 集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层)。 Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模...

mybatis 中 foreach collection的三种用法

foreach元素的属性主要有 item,index,collection,open,separator,close。 item表示集合中每一个元素进行迭代时的别名, index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置, open表示该语句以什么开始, separator表示在每次进行迭代之间以什么符号作为分隔 符, close表示以什么结...

phoenix 索引实践

准备工作    创建测试表    CREATE TABLE my_table ( rowkey VARCHAR NOT NULL PRIMARY KEY, v1 VARCHAR, v2 VARCHAR, v3 VARCHAR ); UPSERT INTO my_tabl...

[Spring] 学习Spring Boot之二:整合MyBatis并使用@Trasactional管理事务

一、配置及准备工作 1、在 Maven 的 pom 文件中新增以下依赖: <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>r...