测试mybatis出bug

来源:2-3 SqlSessionFactory

javaer11

2019-08-29 15:53:38

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();
       }
   }
}

这是报的错

org.apache.ibatis.exceptions.PersistenceException: 

### Error building SqlSession.

### The error may exist in SQL Mapper Configuration

### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.datasource.DataSourceException: Unknown DataSource property: driverClass


写回答

3回答

好帮手慕柯南

2019-08-29

同学你好!

在数据库链接后面添加一下语句

?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&useSSL=false"

图示:

http://img1.sycdn.imooc.com/climg/5d679d200001b11517000109.jpg

同学注意:代码可以以回答这个问题的方式贴出,回复里会改变代码的格式。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

0

好帮手慕柯南

2019-08-29

同学你好!

这是由于使用的数据源不同,在配置参数时名字不同,同学可以参考一下代码将数据源于参数的名字相对应

http://img.mukewang.com/climg/5d6797110001a44309140705.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

0
havaer11
h ### Error getting a new connection. Cause: java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support. ### Cause: java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support. at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.getConnection(DefaultSqlSession.java:300)
h019-08-29
共2条回复

javaer11

提问者

2019-08-29

这个mybatis-config.xml的代码

<?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="dev">
       <!--配置环境,不同的环境不同的id名字-->
       <environment id="dev">
           <!-- 采用JDBC方式对数据库事务进行commit/rollback -->
           <transactionManager type="JDBC"></transactionManager>
           <!--采用连接池方式管理数据库连接-->
           <!--<dataSource type="POOLED">-->
           <dataSource type="POOLED">
               <property name="driverClass" value="com.mysql.jdbc.Driver"/>
               <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/babytun?useUnicode=true&amp;characterEncoding=UTF-8"/>
               <property name="user" value="root"/>
               <property name="password" value="123456"/>
               <property name="initialPoolSize" value="5"/>
               <property name="maxPoolSize" value="20"/>
               <property name="minPoolSize" value="5"/>
               <!--...-->
           </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?useUnicode=true&amp;characterEncoding=UTF-8"/>
               <property name="username" value="root"/>
               <property name="password" value="123456"/>
           </dataSource>
       </environment>
   </environments>
   <mappers>
       <mapper resource="mappers/goods.xml"></mapper>
   </mappers>
</configuration>

0

0 学习 · 8016 问题

查看课程

相似问题

mybatis

回答 2

回答 3

出现bug

回答 1

回答 3