当前使用版本(必填,否则不予处理)

3.5.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

` public static Object sqlSelectOne(SqlSessionFactory sessionFactory, String sql, Class<?> clazz) throws SQLException { SqlSession sqlSession = null; try { // 创建SqlSession sqlSession = sessionFactory.openSession(true); // 获取Configuration Configuration configuration = sessionFactory.getConfiguration(); String msId = SqlCommandType.SELECT + ".sqlSelectOne" + UUID.fastUUID().toString(true); if (!hasMappedStatement(configuration,msId)) { LanguageDriver driver = configuration.getDefaultScriptingLanguageInstance(); SqlSource source = driver.createSqlSource(configuration,sql,clazz); List resultMaps = new ArrayList<>(); resultMaps.add(new ResultMap.Builder(configuration,"sqlSelectOne",clazz,new ArrayList<>(0)).build()); MappedStatement ms = new MappedStatement.Builder(configuration,msId,source,SqlCommandType.SELECT).resultMaps(resultMaps).build(); configuration.addMappedStatement(ms); } return sqlSession.selectOne(msId); } catch (Exception e) { e.printStackTrace(); throw new SQLException(e); } finally { closeSqlSession(sqlSession); }

}

`

执行sqlSession.selectOne时出现的

重现步骤(如果有就写完整)

非spring项目,非xml文件,直接启动项目,然后调用这个接口

报错信息

org.apache.ibatis.exceptions.PersistenceException:

Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for SELECT.sqlSelectOne62223409670101402067ee2def7e724dfaa72737ca285c78b2

Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for SELECT.sqlSelectOne62223409670101402067ee2def7e724dfaa72737ca285c78b2

at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:153)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:76)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:70)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for SELECT.sqlSelectOne62223409670101402067ee2def7e724dfaa72737ca285c78b2 at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:1054) at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:844) at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:837) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150) ... 9 more

Comment From: oriming

@cheng8868789 加上此配置试试: mybatis-plus.global-config.enable-sql-runner=true

Comment From: miemieYaho

你都没有SELECT.sqlSelectOne62223409670101402067ee2def7e724dfaa72737ca285c78b2这个MappedStatements不报错想怎样?