Spring的HibernateDaoSupport及用hibernate执行原生SQL
2009-12-05 15:23
393 查看
Spring为Hibernate的DAO提供工具类:HibernateDaoSupport。该类主要提供了两个方法:
(1)public final HibernateTemplate getHibernateTemplate()
(2)public final void setSessionFactory(SessionFactory sessionFactory)
其中,
(1)setSessionFactory方法接收来自Spring的applicationContext的依赖注入,接收了在Spring中配置的SessionFactory;
(2)getHibernateTemplate方法用来利用刚才的SessionFactory生成Session,来完成数据库的访问。
执行原生SQL(这个类要继承Spring的HibernateDaoSupport类):
(1)查询
(2)插入、更新、删除
(1)public final HibernateTemplate getHibernateTemplate()
(2)public final void setSessionFactory(SessionFactory sessionFactory)
其中,
(1)setSessionFactory方法接收来自Spring的applicationContext的依赖注入,接收了在Spring中配置的SessionFactory;
(2)getHibernateTemplate方法用来利用刚才的SessionFactory生成Session,来完成数据库的访问。
执行原生SQL(这个类要继承Spring的HibernateDaoSupport类):
(1)查询
HibernateTemplate tmpl = getHibernateTemplate(); return tmpl.execute(new HibernateCallback<List<String>>() { @SuppressWarnings("unchecked") @Override public List<String> doInHibernate(Session session) throws HibernateException, SQLException { SQLQuery query = session.createSQLQuery("select name from userinfo where userid=?"); query.addScalar("name", Hibernate.STRING); //返回值类型 query.setInteger(0, Integer.parseInt(userId)); //输入参数 List results = query.list(); //因为只有查询一个列,所以返回的List是List<Object> return (List<String>)results; } });
HibernateTemplate tmpl = getHibernateTemplate(); return tmpl.execute(new HibernateCallback<List<Object[]>>() { @SuppressWarnings("unchecked") @Override public List<Object[]> doInHibernate(Session session) throws HibernateException, SQLException { SQLQuery query = session.createSQLQuery("select name,desc from userinfo where userid=?); query.addScalar("name", Hibernate.STRING); query.addScalar("desc", Hibernate.STRING); query.setInteger(0, Integer.parseInt(userId)); List results = query.list(); //有多个列,返回的是List<Object[]> for (int i = 0; i < results.size(); i++) { Object[] row = (Object[]) results.get(i); String name = (String) row[0]; String desc = (String) row[1]; System.out.println("name=" + name + ";desc=" + desc); } return (List<Object[]>)results; } });
(2)插入、更新、删除
HibernateTemplate tmpl = getHibernateTemplate(); tmpl.execute(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { session.doWork(new Work() { @Override public void execute(Connection conn) throws SQLException { PreparedStatement pstat = conn .prepareStatement("insert into userinfo(userid,name,desc) values(?,?,?)"); for (int i = 0; i < data.size(); i++) { List<String> row = data.get(i); String userid = row.get(0) String name = row.get(1); String desc = row.get(2); pstat.setInt(1, userId); pstat.setString(2, name); pstat.setString(3, desc); pstat.addBatch(); } pstat.executeBatch(); } }); return null; } }); 这里面data是一个List<List<String>>的二维表格形式
相关文章推荐
- Spring的HibernateDaoSupport及用hibernate执行原生SQL
- Spring的HibernateDaoSupport及用hibernate执行原生SQL
- spring与hibernate整合之:继承HibernateDAOSupport方式+理解xml与AutoWired、Resource的区别
- spring : HibernateDaoSupport,其中的sessionFactory并不能自动注入,只能手动
- Spring使用HibernateDaoSupport、HibernateTemplate和JdbcTemplate实现CURD
- spring-framework-3.2.4与hibernate-release-4.3.5下使用HibernateDaoSupport抛出异常
- spring中的HibernateDaoSupport的用法
- javaWeb项目SpringMVC3.2.1与Mybatis3.0.4整合实例(Mybaits-spring配置文件的几种方式)之一SqlSessionDaoSupport方式
- Spring学习笔记-HibernateTemplate和HibernateDaoSupport
- hibernate 使用原生sql不能执行删除!
- spring入门(12)-spring与hibernate整合完成增删改查的操作(继承HibernateDaoSupport调用hibernateTemplate类)
- hibernate 原生sql返回结果执行AddEntity方法
- hibernate执行原生SQL
- Spring与Hibernate整合的HibernateDaoSupport应用中的“内存泄露”问题(学习心得)
- 使用Hibernate SQLQuery执行原生SQL
- spring中的HibernateDaoSupport的用法
- mybatis 整合spring mv SqlSessionDaoSupport
- Junit+spring+hibernate HibernateDaoSupport测试问题
- Spring 的 HibernateDaoSupport 类的 getSession() 导致的连接泄露问题
- Hibernate执行原生sql