【数组下标越界,空指针异常 _mybatis 】 | IT修真院·坑乎
咨询电话 : 010-59478634
切换导航
首页
我的提问
我的回答
我的点赞
消息通知
个人主页
×
提示
尚未登陆,前往官网登陆?
×
提示
尚未登陆,前往官网登陆?
数组下标越界,空指针异常
我也踩过这个坑(
1
)
已统计您的踩坑,无需重复点击
回答(1)
mybatis
详细描述
使用mybatis对数据库操作时,写了一个工具类去完成数据库的连接,调用工具类测试时出现了数组下标越界,从单步调试来看问题使出在工具类的调用,但是不知道具体怎么去解决/
错误截图
源码
package org.sang.db; 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.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.util.Properties; /** * Created by sang on 17-1-13. */ public class DBUtils { private static SqlSessionFactory sqlSessionFactory = null; private static final Class CLASS_LOCK = DBUtils.class; public static SqlSessionFactory initSqlSessionFactory() { InputStream is = null; try { is = Resources.getResourceAsStream("mybatis-conf.xml"); } catch (IOException e) { e.printStackTrace(); } synchronized (CLASS_LOCK) { if (sqlSessionFactory == null) { sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); } } return sqlSessionFactory; } public static SqlSession openSqlSession() { if (sqlSessionFactory == null) initSqlSessionFactory2(); return sqlSessionFactory.openSession(); } public static SqlSessionFactory initSqlSessionFactory2() { InputStream cfgStream = null; Reader cfgReader = null; InputStream proStream = null; Reader proReader = null; Properties properties = null; try { cfgStream = Resources.getResourceAsStream("mybatis-conf.xml"); cfgReader = new InputStreamReader(cfgStream); proStream = Resources.getResourceAsStream("db.properties"); proReader = new InputStreamReader(proStream); properties = new Properties(); properties.load(proReader); //获取密文用户名和密码 String username = properties.getProperty("username"); String password = properties.getProperty("password"); //解密 properties.setProperty("username", ((String) username).substring(0, username.indexOf("-"))); properties.setProperty("password", ((String) password).substring(0, password.indexOf("-"))); } catch (IOException e) { e.printStackTrace(); } synchronized (CLASS_LOCK) { if (sqlSessionFactory == null) { sqlSessionFactory = new SqlSessionFactoryBuilder().build(cfgReader,properties); } } return sqlSessionFactory; } } 以上为工具类 @Test public void test1() { SqlSession sqlSession = null; try { sqlSession = DBUtils.openSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List
list = mapper.getUser("西安"); System.out.println(list); for (User user : list) { System.out.println(user); } sqlSession.commit(); } catch (Exception e) { System.err.println(e.getMessage()); // sqlSession.rollback(); } finally { if (sqlSession != null) { sqlSession.close(); } } } 以上为测试方法 public List
getUser(@Param("address") String address); 以上为被调用的接口里面的方法
select * from user2
WHERE address LIKE concat('%',#{address},'%')
以上是被执行的sql
编辑于2024-11-23
时间排序
热门排序
[郑州|结业弟子]JAVA-张泉良
0
可能是 查询之后是空指针, 如果有空指针的情况,需要先判空!
查看全部>
编辑于2019-04-20
首页
1
末页
去第
页
确定
Copyright ©2015 北京葡萄藤信息技术有限公司 All Rights Reserved | 京ICP备15035574号-1
复制链接
新浪微博
微信扫一扫
2789
0
10
数组下标越界,空指针异常
1
1