测试用例报错

测试用例报错

test.xml

https://img1.sycdn.imooc.com//climg/61ed23c609cb438c15190321.jpg

mybatis-config.xml

https://img1.sycdn.imooc.com//climg/61ed23f209d865aa13121061.jpg

Testor

https://img1.sycdn.imooc.com//climg/61ed240309716e3018770309.jpg

MybatisUtils

https://img1.sycdn.imooc.com//climg/61ed241d099f7af210311047.jpg



https://img1.sycdn.imooc.com//climg/61ed24290931928f18330693.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,同学在连接数据库时,未设置连接那个数据库,则建议同学进行设置。如下所示:然后重新测试代码试一下。

https://img1.sycdn.imooc.com//climg/61ed27d00949f37811630427.jpg

如果还存在问题,则建议同学以复制粘贴的方式反馈代码,便于老师测试代码。

祝学习愉快!

  • 是个大学生 提问者 #1

    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>
       <settings>
           <!-- goods_id ==> goodsId 驼峰命名转换 -->
           <setting name="mapUnderscoreToCamelCase" value="true"/>
       </settings>
       <!--设置默认指向的数据库-->
       <environments default="dev">
           <!--配置环境,不同的环境不同的id名字-->
           <environment id="dev">
               <!-- 采用JDBC方式对数据库事务进行commit/rollback -->
               <transactionManager type="JDBC"></transactionManager>
               <!--采用连接池方式管理数据库连接-->
               <dataSource type="POOLED">
                   <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                   <property name="url" value="jdbc:mysql://localhost:3307/imooc_oa?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true"/>
                   <property name="username" value="root"/>
                   <property name="password" value="root"/>
               </dataSource>
           </environment>
       </environments>
       <mappers>
           <mapper resource="mappers/test.xml"/>
       </mappers>
       </configuration>

    test.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
           PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="test">
       <select id="sample" resultType="String">
           select 'success'
       </select>
    </mapper>

    MybatisUtils

    com.imooc.oa.utilsorg.apache.ibatis.io.Resourcesorg.apache.ibatis.session.SqlSessionorg.apache.ibatis.session.SqlSessionFactoryorg.apache.ibatis.session.SqlSessionFactoryBuilderjava.io.IOExceptionjava.io.Readerjava.util.function.FunctionMybatisUtils {
        SqlSessionFactory = {
            Reader reader = {
                reader = Resources.()= SqlSessionFactoryBuilder().build(reader)} (IOException e) {
                e.printStackTrace()ExceptionInInitializerError(e)}
        }
        Object (Function<SqlSessionObject> func){
            SqlSession sqlSession = .openSession(){
                Object obj = func.apply(sqlSession)obj}{
                sqlSession.close()}
        }
    
    }

    Testor

    com.imooc.oa.utils.MybatisUtilsorg.junit.MybatisUtilsTestor {
        (){
            MybatisUtils.(sqlSession -> {
                String out = (String) sqlSession.selectOne()out})}
    }

    我的3306被占用了,所以用的3307

    2022-01-23 20:33:13
  • 好帮手慕小尤 回复 提问者 是个大学生 #2

    同学你好,1、测试同学反馈的xml代码是没有问题的,则建议同学清除缓存重新测试试一下。如下所示:

    https://img1.sycdn.imooc.com//climg/61ee0aa109055bbf02350186.jpg

    2、如果还存在问题,则同学反馈的MybatisUtils、Testor代码不完整,建议同学选择正确的代码语言反馈代码与反馈完整的异常信息,便于老师测试代码。如下所示: 

    https://img1.sycdn.imooc.com//climg/61ee0b030955176701180331.jpg

    祝学习愉快!

    2022-01-24 10:14:31
  • 是个大学生 提问者 回复 好帮手慕小尤 #3

    Testor

    import com.imooc.oa.utils.MybatisUtils;
    import org.junit.Test;
    
    /**
     * @author: Windows
     * @date: 2022/1/23 16:19
     * @description:
     */
    public class MybatisUtilsTestor {
        @Test
        public void testCase1(){
            MybatisUtils.executeQuery(sqlSession -> {
                String out = (String) sqlSession.selectOne("test.sample");
                return out;
            });
        }
    }

    MybatisUtils

    package com.imooc.oa.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;
    import java.util.function.Function;
    
    /**
     * @author: Windows
     * @date: 2022/1/23 11:19
     * @description:
     */
    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();
                //初始化错误时,通过抛出异常ExceptionInInitializerError通知调用者
                throw new ExceptionInInitializerError(e);
            }
        }
        public static Object executeQuery(Function<SqlSession,Object> func){
            SqlSession sqlSession = sqlSessionFactory.openSession();
            try {
                Object obj = func.apply(sqlSession);
                return obj;
            }finally {
                sqlSession.close();
            }
        }
    
    }

    异常信息

    https://img1.sycdn.imooc.com//climg/61ee1bb509ee16f818602481.jpg





    2022-01-24 11:24:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师