• ### Error opening session. Cause: java.lang.NullPointerException


    在测试mybatis的SQL语句时,出现如下错误提示:

    在这里插入图片描述
    我的Java代码:

    //测试查询
    @Test
    public void run1() throws Exception {
        // 加载配置文件
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        // 创建SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        // 创建SqlSession对象
        SqlSession session = factory.openSession();
        // 获取到代理对象
        BlogMapper mapper = session.getMapper(BlogMapper.class);
    
        List<Blog> emps = mapper.selectByExample(null);
        for (Blog blog : emps) {
            System.out.println(blog);
        }
        // 关闭资源
        session.close();
        in.close();
    }
    

    错误原因是我在整合SSM框架的时候,把mybatis框架的部分配置,整合到了spring-context.xml配置文件中。下面是可以发现下面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">
    <!-- MyBatis的全局配置文件 -->
    <configuration>
    
       <settings>
          <!-- 映射下划线到驼峰命名    last_name ==> lastName    -->
          <setting name="mapUnderscoreToCamelCase" value="true"/>
          <!-- 开启延迟加载 -->
          <setting name="lazyLoadingEnabled" value="true"/>
          <!-- 指定加载的属性是按需加载 -->
          <setting name="aggressiveLazyLoading" value="false"/>
          <!-- 二级缓存 -->
          <setting name="cacheEnabled" value="true"/>
       </settings>
    
       <!--使用typeAliases配置别名,它只能配置domain中类的别名 -->
       <typeAliases>
          <package name="com.online.domain"/>
       </typeAliases>
    
       <!--分页插件-->
       <plugins>
          <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
       </plugins>
    
    </configuration>
    

    解决办法:
    在mybatis-config.xml的同级目录下,添加一个新的Mybatis配置文件SqlMapConfig.xml进行测试使用。
    SqlMapConfig.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="mysql">
            <environment id="mysql">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatisdb"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
    
        <!-- 引入映射配置文件 -->
        <mappers>
            <package name="com.online.dao"/>
        </mappers>
    </configuration>
    

    然后将Java代码中的mybatis-config.xml换为SqlMapConfig.xml。

    //测试查询
    @Test
    public void run1() throws Exception {
        // 加载配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 创建SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        // 创建SqlSession对象
        SqlSession session = factory.openSession();
        // 获取到代理对象
        BlogMapper mapper = session.getMapper(BlogMapper.class);
    
        List<Blog> emps = mapper.selectByExample(null);
    
        for (Blog blog : emps) {
            System.out.println(blog);
        }
        // 关闭资源
        session.close();
        in.close();
    }
    
    
  • 相关阅读:
    CSS规范
    CSS规范
    CSS规范
    CSS function--(来自网易)
    CSS reset--(来自网易)
    js截取图片上传(仅原理)----闲的无聊了代码就不共享了!写的难看,不好意思给你们看了(囧)
    作业:JavaScript(数组篇-poker)给我的徒弟出个题。。。记得早点写完,然后大家3人可以早点打牌了
    BAT及各大互联网公司2014前端笔试面试题--JavaScript篇(昨天某个群友表示写的简单了点,然后我无情的把他的抄了一遍)
    BAT及各大互联网公司2014前端笔试面试题--Html,Css篇(昨天有个群友表示写的简单了点,然后我无情的把他的抄了一遍)
    本日吐槽!“人傻钱多”的P2P公司是否是程序员的合适选择(群聊天记录的娱乐)
  • 原文地址:https://www.cnblogs.com/mxxbc/p/14055677.html
Copyright © 2020-2023  润新知