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);
} }

Hibernate 执行原始SQL语句的更多相关文章

  1. 出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误

    出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误:org.hibernate.MappingException: No Di ...

  2. java:Hibernate框架3(使用Myeclipse逆向工程生成实体和配置信息,hql语句各种查询(使用hibernate执行原生SQL语句,占位符和命名参数,封装Vo查询多个属性,聚合函数,链接查询,命名查询),Criteria)

    1.使用Myeclipse逆向工程生成实体和配置信息: 步骤1:配置MyEclipse Database Explorer: 步骤2:为项目添加hibernate的依赖: 此处打开后,点击next进入 ...

  3. 在django中,执行原始sql语句

    extra()方法 结果集修改器,一种提供额外查询参数的机制 使用extra: 1:Book.objects.filter(publisher__name='广东人员出版社').extra(where ...

  4. 关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题

    转自博客http://blog.csdn.net/xd195666916/article/details/5419316,同时感谢博主 今天做了个用hibernate直接执行原生sql的查询,报错No ...

  5. Hibernate执行原生态sql语句

    @Override public Integer update(String id, String username){ String sql = "update Team_CheLiang ...

  6. python学习-- 在django中,执行原始sql语句

    from django.shortcuts import render, redirect from news.models import Article, Column def test(reque ...

  7. 用Hibernate框架把hql生成可执行的sql语句-Oracle方言

    引言:为什么这样的需求,源自公司项目需要,公司的项目使用java的struts2+spring2.5+oracle中间件tuxedo,数据库用的是Oracle,但由于不直接连接数据库,用中间件处理的方 ...

  8. Hibernate criteria 混合sql语句多表关联时查询注意事项

    直接进入正题 假设有一个实体类 /** * 产品分类 */ public class ProductType{ @Id private String no;//编号 private String na ...

  9. Hibernate执行原生SQL返回List<Map>类型结果集

    我是学java出身的,web是我主要一块: 在做项目的时候最让人别扭的就是hibernate查询大都是查询出List<T>(T指代对应实体类)类型 如果这时候我用的联合查询,那么返回都就是 ...

随机推荐

  1. 由项目中一个hash2int函数引发的思考

    hash2int /** * 计算一个字符串的md5折算成int返回 * @param type $str * @return type */ function hash2int($str) { $m ...

  2. linux传输大文件

    http://dreamway.blog.51cto.com/1281816/1151886 linux传输大文件

  3. 80端口未占用,apache无法启动解决办法

    网上很多关于apache无法启动的原因,新手遇到最多的是80端口被占用. 今天为了解决apache和tomcat端口共存问题,修改了httpd.conf的配置,由于增加位置没有做明显标识,重启apac ...

  4. Theano2.1.15-基础知识之theano如何处理shapre信息

    来自:http://deeplearning.net/software/theano/tutorial/shape_info.html How Shape Information is Handled ...

  5. xml入门

    1.why xml? 如果说JSON是一种轻量级的数据交换格式,那么xml就是重量级的.xml应用于web开发的许多方面,常用于简化数据的存储和共享.永远要记住,xml跟JSON一样是用来存储和传输数 ...

  6. GitHub 上一份很受欢迎的前端代码优化指南-强烈推荐收藏

    看到一份很受欢迎的前端代码指南,根据自己的理解进行了翻译,但能力有限,对一些JS代码理解不了,如有错误,望斧正. HTML 语义化标签 HTML5 提供了很多语义化元素,更好地帮助描述内容.希望你能从 ...

  7. flex弹性布局学习笔记

    前言 资料来源于网络,本人只是对此作了一下操作,记录于此以便以后查阅.目的在于梳理自己前端凌乱的知识点. 本文根据 Brian Franco 的一个flexbox.scss库来记录 入职新公司前对移动 ...

  8. 东大OJ-快速排序

    1236: Simple Sort 时间限制: 1 Sec  内存限制: 128 MB 提交: 195  解决: 53 [提交][状态][讨论版] 题目描述      You are given n ...

  9. jQuery插件---exselect实现联动

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...

  10. [Ajax系列]Ajax介绍

    Ajax简介: Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. What ? AJAX=异步JavaScript和XML AJAX是一种用于创建快读动态网页的技术 通过在后台语 ...