hibernate执行sql

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;
}
});
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值