hibernate通过SQL更新数据

 1     @Resource(name = "hibernateTemplate")
 2     public HibernateTemplate hibernateTemplate;
 3
 4     /**
 5      * @Title: updateBySQL
 6      * @Description: TODO(sql更新)
 7      * @param @param sql sql语句
 8      * @param @param obj 参数
 9      * @param @return
10      * @return int 更新数量
11      * @throws
12      */
13     public int updateBySQL(final String sql, final Object[] obj) {
14         return hibernateTemplate.execute(new HibernateCallback() {
15             public Object doInHibernate(Session session)
16                     throws HibernateException, SQLException {
17                 SQLQuery query = session.createSQLQuery(sql);
18                 if (obj != null && obj.length > 0) {
19                     for (int i = 0; i < obj.length; i++) {
20                         query.setParameter(i, obj[i]);
21                     }
22                 }
23                 return query.executeUpdate();
24             }
25         });
26     }
1     /**
2      * 添加测试
3      */
4     public void addTest() {
5         String sql = "insert test values(?, ?)";
6         int i = this.updateBySQL(sql, new Object[]{1, "test1"});
7         System.out.println("更新记录数:"+i);
8     }

运行结果:

数据库:

注:我是在项目直接测试的,

1. hibernateTemplate通过spring注入。

2. addTest通过junit进行测试的。

时间: 2024-12-26 10:07:27

hibernate通过SQL更新数据的相关文章

SQL 更新数据时触发器造成的性能问题

有时候,我们更新数据时,发现更新的时间很长,一般我们会想到查询的性能很慢,是索引引起的.但有时候不一定,触发器也会造成性能问题. 我们需要在更新数据时,先禁用触发器,然后再恢复 1 --禁用触发器 2 DISABLE TRIGGER 触发器名称 ON 表 3 --启用触发器 4 ENABLE TRIGGER 触发器名称 ON 表

SQL更新数据时多个字段时合在一起的写法

作者:iamlaosong 正常更新一个表中多个字段时,字段是分开写的,例如: update tb_county t set t.prov_name = '安徽', t.city_name = '合肥市', t.xs_mc = '庐阳区' where t.xs_code = '2300'; 可是,更新的值如果来自一个子查询,则这些字段是可以合在一起写的,例如: update tb_county t set (t.prov_name, t.city_name, t.xs_mc) = (select

Sql语句批量更新数据(多表关联)

最近在项目中遇到一个问题,原来设计的功能是不需要一个特定的字段值depid的,但是新的功能需要根据depid来展现,于是出现了这样一个问题,新增加的数据都有正确的depid,而原来的大量的数据就没有depid或者说depid不是想要的,面临要批量更新原来数据depid的问题. 更新涉及到三个表base_cooperativeGroup,base_groupuser,base_user. 列出表结构: 1.base_cooperativeGroup 2.base_groupuser 3.base_

SQL Server编程必知必会(插入/删除/更新数据,视图) -- (80-85 点总结)

------------------------插入数据------------------------- 80.1. 插入完整的行-- 各个列必须以他们在表定义中出现的次序填充INSERT INTO customersVALUES ('Pep E. LaPew','100 Main Street','LOS Angeles','CA','90046','USA',NULL,NULL) -- INSERT 语句的安全操作方法,指定列, INTO 关键字是可选的INSERT INTO custom

sql server主动推送客户端更新数据

小谈需求: 最近工作上接到一个需求,做一个web展示数据的报表,最好能实时更新,不限制所用技术. 第一个问题:web服务器推送给浏览器新数据,一开始我想到的最快的最简单的方法就是 在web页面上js轮询了.因为我们的数据更新频率并不快. 后来觉得这种办法有点太土了. 或许长轮询更有效.  当然长轮询的技术很多了. java 的dwr,c#的 signalr.c#还可以同过异步请求来自己写长轮询. 遇到的第二个问题,就是数据库如何通知web服务器更新数据,下面便是sql server2008的推送

ORACLE基本SQL语句-添加更新数据函数篇

一.添加数据 /*添加数据*/insert into STU values('stu0004','赵一',18,1,"kc0004");insert into STU(STU_ID,STU_NAME,STU_AGE,STU_SET ) values('stu0013','储十一',19,1); 说明:如果不指定将数据添加到那个字段,那么此时必须列出全部数据,如果列出字段,则一一对应,必须列出约束不为空的所有字段,否则报错. 二.更新数据 /*更新数据*/update STU SET S

SQL中Update...Select...的使用,关联查询后进行更新数据

最常用的update语法是: UPDATE <table_name> SET <column_name1> = <value>,SET <column_name2> = <value> 如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦 第一,要select出来放在临时变量上,有很多个哦 第二,再将变量进行赋值. 列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢?就好象下

SQL中使用UPDATE更新数据时一定要记得WHERE子句

我们在使用 SQL 中的 UPDATE 更新数据时,一般都不会更新表中的左右数据,所以我们更新的数据的 SQL 语句中会带有 WHERE 子句,如果没有WHERE子句,就回更新表中所有的数据,在 mysql 中,我们可以设置sql_safe_updates 这个自带的参数来解决,,当该参数开启的情况下,我们必须在 UPDATE 语句后携带 WHERE 条件,否则就会报错.set sql_safe_updates=1; 表示开启该参数.下面是开启sql_safe_updates参数后不带  WHE

JavaEE.sql.Update更新数据

UPDATE 语法格式 UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; S1.常用更新数据用法 UPDATE test_master SET pwd = 'admin' WHERE id = 1000 S2.依赖上一次的值 UPDATE test_master m SET m.id = m.id + 100 WHERE m.bindNo = 'bn001' ref https://www