文档章节

Hibernate4获取Connection,ResultSet对象

拷贝忍者卡卡习
 拷贝忍者卡卡习
发布于 2016/04/03 20:22
字数 384
阅读 203
收藏 0

在比较老的hibernate里面,可以用下面的代码获取connection,还有其他对象。

public class test {

    public List method(String sql) {         
       Connection conn = null;         
       PreparedStatement ps = null;        
       ResultSet rs = null;         
       List ret = new ArrayList();         
       try {             
             conn = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();            
             ps = conn.prepareStatement(sql);             
             rs = ps.executeQuery();             
             while (rs.next()) {       
                    /////             
             }             
       ret.add(rs);        
       } catch (Exception e) { 
            e.printStackTrace();         
       } finally {            
            close();         
       }        
       return ret;     
   }
}

这样,可以像jdbc一样,使用resultset等对象。

 

但是在hibernate4里面,方法已经改了,SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection() 这一句已经换成新的方法,如下: 

getSession().doWork(new Work() {
        @Override
        public void execute(Connection connection) {
                    
        }
    });  

在方法体里面,可以直接使用connection了。

 

但此方法返回的是一个void,而我要取用的是获得resultset对象。所以Hibernate提供了一个能传递返回值得的方法doReturningWork() 。直接上我项目中的代码:

 

public String CheckLogin(String username, String password) throws SQLException {
        String id = null;
        final String sql = "select * from Student where Student_Username='" + username + "' and Student_Password='"
                + password + "' and Student_State='入住'";
        Session session = HibernateSessionFactory.getSession();
        ResultSet rs = session.doReturningWork(new ReturningWork<ResultSet>() {

            @Override
            public ResultSet execute(Connection connection) throws SQLException {
                PreparedStatement preparedStatement = connection.prepareStatement(sql);
                ResultSet rs = preparedStatement.executeQuery();
                return rs;
            }
        });

        while (rs.next()) {
            id = rs.getString("Student_ID");
        }
        return id;
    }

通过内部类,把resultset对象一层一层返回给这个doReturnWork,这样就可以像用jdbc一样使用hibernate了。

 

 

本文转载自:http://www.cnblogs.com/juepei/p/3504858.html?utm_source=tuicool&utm_medium=referral

拷贝忍者卡卡习
粉丝 9
博文 39
码字总数 24335
作品 0
深圳
程序员
私信 提问
JDBC之使用Statement,PreparedStatement,ResultSet

创建一个获取Connection对象和关闭资源的工具类   在对数据库进行CRUD(①查询数据、②数据插入、③数据修改、④数据删除)操作的时候,每一个操作都需要获取Connection对象,所以我们就可...

天蚕宝衣
2016/05/26
84
0
JDBC层次结构和基本构成

本文转载自http://blog.csdn.net/luanlouis/article/details/30060755,感谢分享 前言 最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了...

wl044090432
2017/03/07
0
0
JDBC查询就错了 新手

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'id' in 'field list' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.re......

沉迷沉迷出来
2016/08/08
483
8
死都连不上sqlserver2008.。天啊 崩溃了都。。

有一个web工程要连sqlserver2008 sqljdbc4.0也放在Tomcat/lib下了 项目下里也导了进去 odbc数据源也开了 感觉该做的都应该做了吧 可为什么只要是连接数据为库的操作都出现一样的问题。。都两...

h-2010
2012/12/09
2.8K
12
JDBC Item2: 相关类介绍

1、DriverManager类   Jdbc程序中的DriverManager用于加载驱动,并创建与数据库的链接,这个API的常用方法: DriverManager.registerDriver(new Driver())DriverManager.getConnection(ur...

_Roger_
2016/01/27
26
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
昨天
6
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
昨天
2.7K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
昨天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部