Hibernate 执行原始SQL语句

来源:互联网 发布:网络推手的发展 编辑:程序博客网 时间:2024/05/07 13:01

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

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

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

dao代码如下:

package com.hsinghsu.testSSH.dao.impl;    import java.util.List;    import javax.annotation.Resource;    import org.hibernate.SQLQuery;  import org.hibernate.Session;  import org.hibernate.SessionFactory;  import org.springframework.stereotype.Repository;    import com.hsinghsu.testSSH.dao.BaseDao;    @Repository(value = "baseDao")  public class BaseDaoImpl implements BaseDao {        @Resource(name = "sessionFactory")      private SessionFactory sessionFactory;        public Session getSession() {          return sessionFactory.getCurrentSession();      }        public List queryBySql(String sql) {          List<Object[]> list = getSession().createSQLQuery(sql).list();          return list;      }            public int excuteBySql(String sql)      {          int result ;          SQLQuery query = this.getSession().createSQLQuery(sql);          result = query.executeUpdate();          return result;      }    }  
service代码如下:
package com.hsinghsu.testSSH.service.impl;    import java.util.List;    import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.stereotype.Service;    import com.hsinghsu.testSSH.dao.BaseDao;  import com.hsinghsu.testSSH.service.BaseService;    @Service(value = "baseService")  public class BaseServiceImpl implements BaseService {      @Autowired      private BaseDao baseDao;        public List queryBySql(String sql) {          List<Object[]> list = baseDao.queryBySql(sql);          return list;      }            public int excuteBySql(String sql){          return baseDao.excuteBySql(sql);      }  }  
测试代码如下:
package com.hsinghsu.testSSH.service;    import static org.junit.Assert.assertNotNull;  import static org.junit.Assert.assertTrue;    import java.util.List;    import org.junit.Test;  import org.springframework.beans.factory.annotation.Autowired;    import com.hsinghsu.testSSH.SpringTestBase;    public class BaseServiceTest  extends SpringTestBase{      @Autowired      private BaseService baseService;            @Test      public void testConfig() {           assertNotNull(baseService);           assertTrue(baseService != null);      }            @Test      public void testQueryBySql()      {          String sql = "select * from T_TEST_USER WHERE SEX = 1";          List<Object[]> list = baseService.queryBySql(sql);          System.out.println("---"+list.size());          for(Object[] obj :list)          {              System.out.println(obj[0]+" -- "+ obj[1]+" -- "+obj[2]);          }      }            @Test      public void testExcuteBySql()      {  //      String sql = "UPDATE T_TEST_USER SET NAME = 'GSS09', PWD = 'GG007', AGE = 24, SEX = 1 WHERE ID = 6";  //      String sql = "UPDATE T_TEST_USER SET NAME = 'GSS29', PWD = 'GG007' WHERE ID = 6";  //      String sql = "insert into T_TEST_USER(ID,NAME,PWD,AGE,SEX) values(7,'gogo08','gogopwd08',24,1)";          String sql = "delete from T_TEST_USER where ID = 7";            int result = baseService.excuteBySql(sql);          System.out.println("---009:"+result);      }           }  

原创粉丝点击