Hibernate 执行SQL语句

来源:互联网 发布:时间管理软件 知乎 编辑:程序博客网 时间:2024/05/18 16:15

在hibernate中有时不需要用到表的映射,需要直接执行SQL语句。

其中sessionFactory在配置文件中配置,SSH详细配置见http://blog.csdn.net/xumengxing/article/details/8586012

在dao层中定义两个常见函数用于查询和执行操作。

dao代码如下:

[java] view plaincopy
  1. package com.hsinghsu.testSSH.dao.impl;    
  2.     
  3. import java.util.List;    
  4.     
  5. import javax.annotation.Resource;    
  6.     
  7. import org.hibernate.SQLQuery;    
  8. import org.hibernate.Session;    
  9. import org.hibernate.SessionFactory;    
  10. import org.springframework.stereotype.Repository;    
  11.     
  12. import com.hsinghsu.testSSH.dao.BaseDao;    
  13.     
  14. @Repository(value = "baseDao")    
  15. public class BaseDaoImpl implements BaseDao {    
  16.     
  17.     @Resource(name = "sessionFactory")    
  18.     private SessionFactory sessionFactory;    
  19.     
  20.     public Session getSession() {    
  21.         return sessionFactory.getCurrentSession();    
  22.     }    
  23.     
  24.     public List queryBySql(String sql) {    
  25.         List<Object[]> list = getSession().createSQLQuery(sql).list();    
  26.         return list;    
  27.     }    
  28.         
  29.     public int excuteBySql(String sql)    
  30.     {    
  31.         int result ;    
  32.         SQLQuery query = this.getSession().createSQLQuery(sql);    
  33.         result = query.executeUpdate();    
  34.         return result;    
  35.     }    
  36.     
  37. }    
service代码如下:
[java] view plaincopy
  1. package com.hsinghsu.testSSH.service.impl;    
  2.     
  3. import java.util.List;    
  4.     
  5. import org.springframework.beans.factory.annotation.Autowired;    
  6. import org.springframework.stereotype.Service;    
  7.     
  8. import com.hsinghsu.testSSH.dao.BaseDao;    
  9. import com.hsinghsu.testSSH.service.BaseService;    
  10.     
  11. @Service(value = "baseService")    
  12. public class BaseServiceImpl implements BaseService {    
  13.     @Autowired    
  14.     private BaseDao baseDao;    
  15.     
  16.     public List queryBySql(String sql) {    
  17.         List<Object[]> list = baseDao.queryBySql(sql);    
  18.         return list;    
  19.     }    
  20.         
  21.     public int excuteBySql(String sql){    
  22.         return baseDao.excuteBySql(sql);    
  23.     }    
  24. }    
测试代码如下:
[java] view plaincopy
  1. package com.hsinghsu.testSSH.service;    
  2.     
  3. import static org.junit.Assert.assertNotNull;    
  4. import static org.junit.Assert.assertTrue;    
  5.     
  6. import java.util.List;    
  7.     
  8. import org.junit.Test;    
  9. import org.springframework.beans.factory.annotation.Autowired;    
  10.     
  11. import com.hsinghsu.testSSH.SpringTestBase;    
  12.     
  13. public class BaseServiceTest  extends SpringTestBase{    
  14.     @Autowired    
  15.     private BaseService baseService;    
  16.         
  17.     @Test    
  18.     public void testConfig() {    
  19.          assertNotNull(baseService);    
  20.          assertTrue(baseService != null);    
  21.     }    
  22.         
  23.     @Test    
  24.     public void testQueryBySql()    
  25.     {    
  26.         String sql = "select * from T_TEST_USER WHERE SEX = 1";    
  27.         List<Object[]> list = baseService.queryBySql(sql);    
  28.         System.out.println("---"+list.size());    
  29.         for(Object[] obj :list)    
  30.         {    
  31.             System.out.println(obj[0]+" -- "+ obj[1]+" -- "+obj[2]);    
  32.         }    
  33.     }    
  34.         
  35.     @Test    
  36.     public void testExcuteBySql()    
  37.     {    
  38. //      String sql = "UPDATE T_TEST_USER SET NAME = 'GSS09', PWD = 'GG007', AGE = 24, SEX = 1 WHERE ID = 6";    
  39. //      String sql = "UPDATE T_TEST_USER SET NAME = 'GSS29', PWD = 'GG007' WHERE ID = 6";    
  40. //      String sql = "insert into T_TEST_USER(ID,NAME,PWD,AGE,SEX) values(7,'gogo08','gogopwd08',24,1)";    
  41.         String sql = "delete from T_TEST_USER where ID = 7";    
  42.     
  43.         int result = baseService.excuteBySql(sql);    
  44.         System.out.println("---009:"+result);    
  45.     }    
  46.            
  47. }    
0 0
原创粉丝点击