hibernate 执行sql

来源:互联网 发布:音乐软件大全 编辑:程序博客网 时间:2024/06/02 15:46
1.执行sql,返回一个结果集,适用查询一个字段并返回一条记录
Java代码  收藏代码
  1. public Long findSeqTbTest() {  
  2.     String sql = "select SEQ_TB_TEST.nextval from dual";  
  3.     SQLQuery query = this.getSession().createSQLQuery(sql);  
  4.     String str = query.uniqueResult().toString();  
  5.     return Long.valueOf(str);  
  6. }  

Java代码  收藏代码
  1. //获取表中最小的id  
  2. String sql = "select min(a.employeeid) from Emplyees a";  
  3. Long id = (Long) session.createQuery(sql).uniqueResult();  
  4.   
  5. //获取数据库时间mysql  
  6. String sql = "select now() from dual";  
  7. String time =  session.createSQLQuery(sql).uniqueResult().toString();  


2.删除、更新等操作,这里参数是从0开始的
Java代码  收藏代码
  1. public void deleteTbTest(Long id) {  
  2.     String hql = "DELETE FROM TbTest WHERE ID = ?";  
  3.     this.getSession().createQuery(hql).setLong(0, id).executeUpdate();  
  4. }  

Java代码  收藏代码
  1. public void updateTbTest(Date date, boolean flag) {  
  2.     String sql = "update tb_test set t_name=? where t_status!=1 and t_date" + (flag ? "<?" : "=?");  
  3.     SQLQuery query = this.getSession().createSQLQuery(sql);  
  4.     query.setString(0,flag ? "hello""hi").setDate(1, date).executeUpdate();  
  5. }  


3.执行sql,查询单表中多条数据
Java代码  收藏代码
  1. //尽量避免适用"*"  
  2. 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 = ?)";  
  3. SQLQuery query = getSession().createSQLQuery(sql);  
  4. query.addEntity(Employee.class).setDate(0, day);  
  5. List<Employee> retList = query.list();  


4.查询多表
Java代码  收藏代码
  1. 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 = ?";  
  2. return getHibernateTemplate().find(hql, new Object[] { name, sex });  

每个字段都保存在map中(key是字段名,value是此字段的值如:[{empID=1,empName=leona,...},...])

5.查询多表
Java代码  收藏代码
  1. 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 = ?";  
  2.         return (List<EmpBean>) this.getSession()  
  3.             .createSQLQuery(sql)  
  4.             .addScalar("deptID", Hibernate.STRING)  
  5.             .addScalar("deptNo", Hibernate.STRING)  
  6.             .addScalar("deptName", Hibernate.STRING)  
  7.             .addScalar("empName", Hibernate.STRING)  
  8.             .addScalar("empID", Hibernate.STRING)  
  9.             .addScalar("age", Hibernate.LONG)  
  10.             .addScalar("birthday", Hibernate.DATE)  
  11.             .addScalar("empNo", Hibernate.STRING)  
  12.             .setString(0, empName)  
  13.             // 将结果集映射为EmpBean对象  
  14.             .setResultTransformer(  
  15.                     Transformers.aliasToBean(EmpBean.class))  
  16.             .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;
                }
            });
    }
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果手机爱思助手下不了东西怎么办 苹果手机在爱思助手刷坏了怎么办 美团外卖摔坏我的奶茶怎么办 米兔定位电话头像突然调换了怎么办 还在气头上时孩子就来撒娇了怎么办 老公把老婆微信屏蔽了老婆该怎么办 魅族手机有质量问题不给退款怎么办 屏幕点不动锁屏密码无法点怎么办 在嘴巴和鼻翼周围长痘该怎么办 小孩嘴巴被蚊虫咬的红肿怎么办 每次洗头都掉好多头发该怎么办 关于宝宝脾不好胃口却很好怎么办 高中生掉发严重怎么办该看什么科 脱头发如何治疗 掉头发厉害怎么办 头发上突然秃了一小块怎么办 全秃过后长出来白色头发怎么办 高三学生喜欢打球影响学习怎么办 高三学生受同学搔挠学习怎么办 烫完头发掉头发很厉害怎么办 烫头发后掉头发很厉害怎么办 十八岁了下门牙活动疼痛怎么办 烫完头发后掉头发很厉害怎么办 16岁的孩孑得了肺炎怎么办 我的头发掉的很厉害怎么办 八个月宝宝头后面没头发怎么办 生完孩子掉头发很厉害怎么办 生完孩子后掉头发很厉害怎么办 头发又细又软又卷怎么办 后颈部没有头发掉光了想植发怎么办 头发掉的厉害怎么办怎么拯救掉头发 头发可以种植吗 如果是秃顶怎么办 染头发把手指甲染黑了怎么办 怀孕两个月下体流褐色分泌物怎么办 头发总是大把大把的得掉 怎么办 严重脱发怎么办去问南宁肤康 脱发严重怎么办去看南宁肤康 前额头发少怎么办 如何使头发增多 生完宝宝头发一把一把的掉怎么办 生完宝宝后头发掉的厉害怎么办 生完宝宝头发掉的厉害怎么办 生了小孩后头发掉很多怎么办