mybatis中SqlSession的selectList方法报错 org.apache.ibatis.exceptions.PersistenceException
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis中SqlSession的selectList方法报错 org.apache.ibatis.exceptions.PersistenceException相关的知识,希望对你有一定的参考价值。
这个是mapper配置文件,selectCity这个经过测试没有问题
这个方法报错,在session.selectList这一行报错
这个是测试用的main方法
错误信息
求给位高手指教,先在此谢过了。
sql语句是没有错误的。
追答select * 这个*号 你改成你的字段看看
追问问题已经解决了 ,谢谢。
参考技术B selectCityList的resultType改为City,应该就好了!追问按照你说的改了,程序运行OK,请教为什么呢?
追答因为select语句查询出的内容,是city的所有字段,语句是这样的!
那么查询的结果resultType,理所应当的也应该是City对象!
在dao中使用session.selectList本身已经注定返回结果是list类型的对象,不需要在其他地方做任何操作!
说的不是很好!
希望你能看明白!
最简单的理解就是,你查询的是什么对象,resultType就应该是什么对象!
深一点的理解就是,你查询的是什么字段,resultType中的对象,应该包还对应的属性!
mybatis中的factory工厂与Sqlsession
1.SqlSession的使用范围
SqlSession中封装了对数据库的操作,如:查询、插入、更新、删除等。通过SqlSessionFactory创建SqlSession,而SqlSessionFactory是通过SqlSessionFactoryBuilder进行创建的。
2. SqlSessionFactoryBuilder
SqlSessionFactoryBuilder用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFactoryBuilder了,因为SqlSession是通过SqlSessionFactory生产,所以可以将SqlSessionFactoryBuilder当成一个工具类使用,最佳使用范围是方法范围即方法体内局部变量。
3. SqlSessionFactory
SqlSessionFactory是一个接口,接口定义了openSesion的不同重载方法,SqlSessionFacoty的最佳使用范围是整个应用运行期间,一旦创建后可以重复使用,通常以道路模式管理SqlSessionFacoty。
4. SqlSession
SqlSession是一个面向用户的接口,SqlSession中定义了数据库操作方法。
每个线程都应该有自己的SqlSession实例。SqlSession的实例是不能共享使用的,它也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession实例的引用放在一个类的静态字段或实例字段中。
打开一个SqlSession,使用完毕就要关闭它。通常把这个关闭操作放到finally块中以确保每次都能执行关闭。如下:
SqlSession session = sqlSessionFactory.openSession(); try { // do work } finally { session.close(); }
以上是关于mybatis中SqlSession的selectList方法报错 org.apache.ibatis.exceptions.PersistenceException的主要内容,如果未能解决你的问题,请参考以下文章
mybatis中SqlSession的selectList方法报错 org.apache.ibatis.exceptions.PersistenceException
mybatis 中 sqlSession = factory.openSession(); sqlSession是什么?