hibernate执行sql的方法

  1. 1.在使用hibernate的时候,有的时候需要用sql语句来执行,而HibernateDaoSupport方便了操作后,执行sql时候遇到不能执行的问题,  
    2.下列方法是一个内部类来执行sql,可以写一个通用方法来执行sql,通常如果没有必要尽量不使用sql,但是有的时候就必须使用了,就想下列的查询分组查询,不想在hibernate中使用一对多关系,而又必须使用group by 哪么只能使用下列方式,  
    3.import org.hibernate.HibernateException;  
    4.import org.hibernate.Session;  
    5.import org.springframework.orm.hibernate3.HibernateCallback;  
    6.import java.sql.SQLException;  
    7.import java.sql.Connection;  
    8.import java.sql.PreparedStatement;  
    9.import java.sql.ResultSet;  
    10.  
    11.public List<KnowledgeQueryBean> getKnowledgeQueryInfo() {  
    12.        List<KnowledgeQueryBean> ListAll = new ArrayList<KnowledgeQueryBean>();  
    13.        final String sql = "SELECT  ky.KNOWLEDGEQUERYID,ky.TITILE,ky.CREATEDATE,eu.USERNAME ,ky.USERID,COUNT(kyr.KNOWLEDGEQUERYID) AS COUNT"+  
    14.                " FROM  KNOWLEDGEQUERY ky LEFT JOIN KNOWLEDGEQUERYANSWER kyr ON  ky.KNOWLEDGEQUERYID =  kyr.KNOWLEDGEQUERYID" +  
    15.                " LEFT JOIN EOM_USER eu  ON ky.USERID = eu.USER_ID"+  
    16.                " GROUP BY ky.KNOWLEDGEQUERYID,ky.TITILE,ky.CREATEDATE,eu.USERNAME,ky.USERID ORDER BY ky.CREATEDATE DESC";  
    17.        ListAll = (List<KnowledgeQueryBean>)this.getHibernateTemplate().execute(  
    18.                new HibernateCallback(){  
    19.                    public Object doInHibernate(Session session)  
    20.                    throws HibernateException, SQLException {  
    21.                    Connection con = session.connection();  
    22.                    PreparedStatement ps = con.prepareStatement(sql);  
    23.                    ResultSet rs = ps.executeQuery();  
    24.                    List<KnowledgeQueryBean> all = new ArrayList<KnowledgeQueryBean>();  
    25.                    while(rs.next()){  
    26.                        KnowledgeQueryBean kqb = new KnowledgeQueryBean();  
    27.                        kqb.setKnowledgeQueryId( rs.getLong("KNOWLEDGEQUERYID"));  
    28.                        kqb.setTitle(rs.getString("TITILE"));  
    29.                        kqb.setCreateDate(rs.getDate("CREATEDATE"));  
    30.                        kqb.setContent(rs.getString("USERNAME"));  
    31.                        kqb.setUserId(rs.getLong("USERID"));  
    32.                        kqb.setCount(rs.getInt("COUNT"));  
    33.                        all.add(kqb);  
    34.                    }  
    35.                    rs.close();  
    36.                    ps.close();  
    37.                    session.flush();  
    38.                    session.close();  
    39.                    return all;  
    40.                    }  
    41.                }  
    42.        );  
    43.        return ListAll;  
    44.    }  
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值