1.执行sql,返回一个结果集,适用查询一个字段并返回一条记录
public Long findSeqTbTest() {
String sql = "select SEQ_TB_TEST.nextval from dual";
SQLQuery query = this.getSession().createSQLQuery(sql);
String str = query.uniqueResult().toString();
return Long.valueOf(str);
}
//获取表中最小的id
String sql = "select min(a.employeeid) from Emplyees a";
Long id = (Long) session.createQuery(sql).uniqueResult();
//获取数据库时间mysql
String sql = "select now() from dual";
String time = session.createSQLQuery(sql).uniqueResult().toString();
2.删除、更新等操作,这里参数是从0开始的
public void deleteTbTest(Long id) {
String hql = "DELETE FROM TbTest WHERE ID = ?";
this.getSession().createQuery(hql).setLong(0, id).executeUpdate();
}
public void updateTbTest(Date date, boolean flag) {
String sql = "update tb_test set t_name=? where t_status!=1 and t_date" + (flag ? "<?" : "=?");
SQLQuery query = this.getSession().createSQLQuery(sql);
query.setString(0,flag ? "hello": "hi").setDate(1, date).executeUpdate();
}
3.执行sql,查询单表中多条数据
//尽量避免适用"*"
String sql = "select * from employee e where e.valid=1 and not exists (select employeeid from attendance a where a.employeeid=e.employeeid and a.date = ?)";
SQLQuery query = getSession().createSQLQuery(sql);
query.addEntity(Employee.class).setDate(0, day);
List<Employee> retList = query.list();
4.查询多表
String hql = "select new map(dept.deptID as deptID,dept.depNo as deptNo,dept.deptName as deptName,emp.empName as empName,emp.empID as empID,emp.empAge as age,emp.empNo as empNo) from Department dept ,Employee emp where dept.depID = emp.depID and emp.empName = ? and emp.sex = ?";
return getHibernateTemplate().find(hql, new Object[] { name, sex });
每个字段都保存在map中(key是字段名,value是此字段的值如:[{empID=1,empName=leona,...},...])
5.查询多表
String sql = "select dept.deptID as deptID,dept.depNo as deptNo,dept.deptName as deptName,emp.empName as empName,emp.empID as empID,emp.empAge as age,emp.empNo as empNo,emp.birthday as birthday from Employee emp LEFT JOIN Department dept on dept.depID = emp.depID where empName = ?";
return (List<EmpBean>) this.getSession()
.createSQLQuery(sql)
.addScalar("deptID", Hibernate.STRING)
.addScalar("deptNo", Hibernate.STRING)
.addScalar("deptName", Hibernate.STRING)
.addScalar("empName", Hibernate.STRING)
.addScalar("empID", Hibernate.STRING)
.addScalar("age", Hibernate.LONG)
.addScalar("birthday", Hibernate.DATE)
.addScalar("empNo", Hibernate.STRING)
.setString(0, empName)
// 将结果集映射为EmpBean对象
.setResultTransformer(
Transformers.aliasToBean(EmpBean.class))
.list();
String hql = "from Attendance att where att.employeeid = ? and att.date =? ";
List<Attendance> list = this.getHibernateTemplate().find(hql,
new Object[] { employeeid, workDay });
if (null != list && !list.isEmpty()) {
return list.get(0);
}
String queryString = "FROM Attendance a WHERE a.employeeid=? AND DATE_FORMAT(a.date,'%Y-%m')=DATE_FORMAT(?,'%Y-%m') ORDER BY a.teamname";
Query queryObject = getSession(). createQuery(queryString);
queryObject.setParameter(0, id);
queryObject.setParameter(1, date);
return queryObject.list();
Session session = getSession();
session.clear();
getSession().saveOrUpdate(transientInstance);
startBatch()的用法
public class LocalDaoImpl extends SqlMapClientDaoSupport implements LocalDao {
public void insertBuNaTaxBatLst(final PaginatedList list)
{
getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor)
throws SQLException {
executor.startBatch();
// do some iBatis operations here
for(int i=0,count=list.size();i<count;i++)
{
executor.insert("insertBuNaTaxBatLst", list.get(i));
if (i % 50 == 0) {
System.out.println("----" + i);//没有意义只为测试
}
}
executor.executeBatch();
return null;
}
});
}
分享到:
相关推荐
"hibernate执行原生sql语句" Hibernate 是一种流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在一些情况下,我们需要直接执行原生 SQL 语句,而不是使用 Hibernate 的...
在Java的持久化框架Hibernate中,执行原生SQL(Native SQL)是常见需求,尤其是在处理特定数据库特性或者优化性能时。本篇文章将详细介绍在Hibernate中执行原生SQL的几种方式,以及它们各自的适用场景和优缺点。 1....
// 使用Hibernate执行SQL Session session = sessionFactory.openSession(); SQLQuery query = session.createSQLQuery(sql); // 设置参数绑定 query.setParameter("param1", value1); query.setParameter("param2",...
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
3. 在Service层中调用解析器方法,执行相应的SQL操作。 4. 结合Spring的事务管理,确保数据操作的一致性和原子性。 从"只有controller和service层"来看,这个项目可能没有涉及视图层,因此可能是一个RESTful API...
本文将深入探讨如何在Spring和Hibernate中执行存储过程,并基于描述中的例子进行解析。 首先,让我们了解Spring如何执行存储过程。Spring通过JdbcTemplate或NamedParameterJdbcTemplate提供存储过程的调用。...
通常,Hibernate以其对象关系映射(ORM)能力著称,允许开发者通过Java对象来操作数据库,但有时我们仍需直接执行SQL,特别是在处理复杂查询或者批量数据操作时。以下是如何利用Hibernate实现这一功能的方法: 1. *...
这些配置会捕获Hibernate执行的SQL语句及其参数绑定,从而在控制台看到完整的、参数化的SQL。 在开发环境中,这样的配置非常有用,因为它能帮助我们理解查询行为,定位潜在的性能瓶颈,或者检查数据是否按照预期...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者通过面向对象的方式来操作数据库,而无需直接编写SQL语句。在这个场景中,我们将探讨如何使用Hibernate与SQL Server 2005数据库进行...
给定代码示例中的`ProductBoxLogDaoImpl`类展示了如何在Hibernate中执行原生SQL查询,并将结果转换为Java对象列表。 ##### 1. 创建SQLQuery对象 ```java SQLQuery query1 = session.createSQLQuery(sql); ``` 这里...
在使用Hibernate执行SQL查询时,我们通常有以下几种方式: 1. HQL(Hibernate Query Language):这是Hibernate专有的查询语言,语法类似于SQL,但面向对象。例如,我们可以用`from Customer`来获取所有Customer...
1. 新闻发布:管理员通过后台界面输入新闻标题、内容、分类等信息,点击发布后,数据通过Struts提交到Hibernate,由Hibernate执行SQL语句将数据存入数据库。 2. 新闻管理:管理员可以查看、编辑和删除已发布的新闻...
标题 "Hibernate 连接 SQL Server 2000" 涉及到的是在Java开发中使用Hibernate ORM框架与较旧版本的SQL Server数据库(即SQL Server 2000)进行交互的知识点。以下是对这个主题的详细阐述: Hibernate是Java领域中...
Hibernate会根据这些查询语句动态生成对应的SQL,并执行在数据库上。这极大地简化了数据库操作,同时保持了代码的可读性和可维护性。 模仿Hibernate生成SQL语句,我们可以从以下几个方面入手: 1. **实体类...
这通常涉及到在HQL中嵌入SQL片段,或者使用`createSQLQuery`方法直接执行SQL查询。同时,别忘了映射查询结果到对应的Java对象。 4. **max分页**: 提到的`max分页`可能是指在某些场景下,我们需要知道总共有多少页...
本文将深入探讨如何将Spring与Hibernate整合,以便在SQL Server数据库上执行SQL操作。 首先,Spring框架是一个全面的Java企业级应用开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性,使得应用...
然而,在使用Hibernate执行SQL查询时,如果查询的目标表中存在char类型的字段,Hibernate有时会将该字段的数据映射成一个字符,而非完整的字符串。这主要是由于Hibernate默认的映射机制所导致的,即对于char类型的...
在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了与数据库的交互,使得开发者可以更专注于业务逻辑而不是底层的SQL操作。本文将详细讲解如何使用Hibernate来编写通用的数据库操作代码,包括插入...
当我们需要执行一些特殊的、复杂的或者非标准的SQL查询时, Hibernate的本地SQL查询功能就显得尤为实用。本文将深入探讨如何使用Hibernate将本地SQL查询的结果封装成对象。 首先,本地SQL查询(Native SQL)是指...