sqlsession为啥不能作为全局变量?

qq291893221 2011-07-30 11:21:55
mybatis中的,SqlSession 放在方法外容易出错,而放在方法内部就不会出错,哪位高手知道什么理由吗?



SqlSession session = MyBatisUtil.getSqlSession(); //放在这里,这样就出错

//添加频道
public void addChannel(Channel c) {
SqlSession session = MyBatisUtil.getSqlSession(); //放在这里,而这样就不出错
............
}

//删除频道
public void deleteChannel(String[] ids) {
SqlSession session = MyBatisUtil.getSqlSession();
................
}

//根据id查询频道
public Channel getChannelById(int id) {
SqlSession session = MyBatisUtil.getSqlSession();
...........
return c;
}

//查询频道
public ChannelPageVO searchChannel(String searchtitle, int offset,
int pagesize) {
SqlSession session = MyBatisUtil.getSqlSession();
..........
return pv;
}

//查询所有的频道
public ChannelPageVO searchAllChannel() {
SqlSession session = MyBatisUtil.getSqlSession();
...........
return pv;
}

//更新频道
public void updateChannel(Channel c) {
SqlSession session = MyBatisUtil.getSqlSession();
............
}
...全文
253 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq291893221 2011-07-31
  • 打赏
  • 举报
回复
非常感谢……
蒙奇D路飞 2011-07-30
  • 打赏
  • 举报
回复
我帮你查了一下

SqlSession是怎么描述的?
1、SqlSession是线程不安全的。
不安全意味着:把它定义成方法的局部变量,而不是实例变量、静态变量。

2、用完SqlSession后需要close
怎么close,给出实际pattern。

蒙奇D路飞 2011-07-30
  • 打赏
  • 举报
回复
既然你学习ibatis 你应该去查它的api,网上有的 ,下一个,然后找到sqlsession看他是什么类型

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧