comalibabadruidpoolDruidPooledConnection cannot be cast to orgapacheibatismappingMappedStatement这个错怎么解决?
这个错误可能是因为在使用Mybatis时,将Druid连接池中的连接对象直接传递给了Mapper的方法,导致类型转换错误。解决方法是在Mapper的方法中使用SqlSession对象来获取连接,而不是直接使用连接池中的连接。可以按照以下步骤解决:
- 在Mapper接口中添加SqlSession参数,例如:
public interface MyMapper {
void myMethod(SqlSession sqlSession, MyParam myParam);
}
- 在Mapper.xml文件中使用SqlSession对象来获取连接,例如:
<insert id="myMethod" parameterType="MyParam">
<selectKey keyProperty="id" resultType="Long" order="BEFORE">
SELECT nextval('my_sequence')
</selectKey>
INSERT INTO my_table(id, name) VALUES(#{id}, #{name})
</insert>
- 在调用Mapper方法时,传递SqlSession对象,例如:
SqlSession sqlSession = sqlSessionFactory.openSession();
MyMapper myMapper = sqlSession.getMapper(MyMapper.class);
MyParam myParam = new MyParam();
myParam.setId(1L);
myParam.setName("test");
myMapper.myMethod(sqlSession, myParam);
sqlSession.commit();
sqlSession.close();
这样就可以避免类型转换错误,正常执行Mybatis操作
原文地址: https://www.cveoy.top/t/topic/gtYO 著作权归作者所有。请勿转载和采集!