Hibernate 执行原始SQL语句
在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语句的更多相关文章
- 出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误
出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误:org.hibernate.MappingException: No Di ...
- java:Hibernate框架3(使用Myeclipse逆向工程生成实体和配置信息,hql语句各种查询(使用hibernate执行原生SQL语句,占位符和命名参数,封装Vo查询多个属性,聚合函数,链接查询,命名查询),Criteria)
1.使用Myeclipse逆向工程生成实体和配置信息: 步骤1:配置MyEclipse Database Explorer: 步骤2:为项目添加hibernate的依赖: 此处打开后,点击next进入 ...
- 在django中,执行原始sql语句
extra()方法 结果集修改器,一种提供额外查询参数的机制 使用extra: 1:Book.objects.filter(publisher__name='广东人员出版社').extra(where ...
- 关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题
转自博客http://blog.csdn.net/xd195666916/article/details/5419316,同时感谢博主 今天做了个用hibernate直接执行原生sql的查询,报错No ...
- Hibernate执行原生态sql语句
@Override public Integer update(String id, String username){ String sql = "update Team_CheLiang ...
- python学习-- 在django中,执行原始sql语句
from django.shortcuts import render, redirect from news.models import Article, Column def test(reque ...
- 用Hibernate框架把hql生成可执行的sql语句-Oracle方言
引言:为什么这样的需求,源自公司项目需要,公司的项目使用java的struts2+spring2.5+oracle中间件tuxedo,数据库用的是Oracle,但由于不直接连接数据库,用中间件处理的方 ...
- Hibernate criteria 混合sql语句多表关联时查询注意事项
直接进入正题 假设有一个实体类 /** * 产品分类 */ public class ProductType{ @Id private String no;//编号 private String na ...
- Hibernate执行原生SQL返回List<Map>类型结果集
我是学java出身的,web是我主要一块: 在做项目的时候最让人别扭的就是hibernate查询大都是查询出List<T>(T指代对应实体类)类型 如果这时候我用的联合查询,那么返回都就是 ...
随机推荐
- zepto阻止事件冒泡
$("#model_frame").on("click",function(){ $(this).hide(); console.log($(this)); } ...
- .net AES加密解密
using System; using System.Collections.Generic; using System.Text; using System.Secur ...
- C# Tostring 格式化输出字符串全解
C 货币 2.5.ToString("C") ¥2.50 D 十进制数 .ToString("D5") E 科学型 .ToString("E" ...
- Codevs 1506 传话(floyd大法好)。
1506 传话 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 一个朋友网络,如果a认识b,那么如果a第 ...
- 将函数传给webworker
var zWorker = function (func,cb){ var node = document.createElement('script'),workerId='worker' + Da ...
- Castle.ActiveRecord 多对多关系 引发的错误处理
在Castle.ActiveRecord 实体类中,如果两个对象有 “多对多” 关系,一般的做法是将其分解为 两个“一对多”关系,但有时引发了 “您要删除 或 引用 的对象#2在数据库中不存在”的异常 ...
- 转 FileStream Read File
FileStream Read File [C#] This example shows how to safely read file using FileStream in C#. To be s ...
- Vue系列:如何将百度地图包装成Vue的组件
主要分解为如下步骤: (1)在html文件中引入百度地图, <script type="text/javascript" src="http://api.map.b ...
- (转) RSA算法原理(一)
最近用到了RSA加密算法,虽然有现成的,但是想看看它的原理,翻到此文,感觉写得很好,通俗易懂,转了. 作者: 阮一峰 日期: 2013年6月27日 如果你问我,哪一种算法最重要? 我可能会回答&q ...
- 一款炫酷的幻灯片播放框架介绍(附demo及使用方法)
废话不多说,先上demo(建议在chrome下打开 F键全屏 esc退出全屏): 我的demo-博客园简介 官网demo 更多demo 今天为大家介绍一款基于css3和JavaScript的幻灯片播放 ...