在Hibernate中实体对象映射优化(临时表映射)
2018-02-10 11:27
253 查看
在Hibernate中实体对象映射优化(临时表映射)
HQL语句无法做出细致的SQL优化,如何使用临时表映射一个临时表对象呢,其实就是相当简单的一句话(毕竟是Java)/* 字符解释 */ Xxx - 表示VO对象
创建VO(Value Object,值对象)映射对象 - PostVO和VO是相似概念
fileNo,fileNum,recordDate三个成员变量(成员变量是指有get/set的全局变量)
★ 成员变量名必须和sql字段别名一致(区分大小写)
注意事项:设置get/set方法,默认构造函数
编写sql语句
String sql = "select d.fileNo fileNo, i.fileNum fileNum, d.recordDate recordDate from t_dossier d,t_inner i where d.id>50"
★ sql字段别名必须和成员变量名保持一致(区分大小写)
获取Query
Query query = XXXXXXXX.getCurrentSession().createSQLQuery(hql) .addScalar("fileNo", StandardBasicTypes.STRING) .addScalar("fileNum", StandardBasicTypes.LONG) .addScalar("recordDate", StandardBasicTypes.DATE) .setResultTransformer(Transformers.aliasToBean(DosserBean.class));
这里我是继承Dao层通用父类,可能和你们的实现语句不完全一致,但只要找到getCurrentSession()方法就可以了
- .addScalar("对象字段名",字段类型)
Xxx表示的是VO对象
查询
List<Xxx> listUser = query.list();
最后总结
对象映射只要掌握好成员变量名称以及构造方法即可,快去优化你的查询代码吧PS:这里原来的SQL相当复杂,有兴趣的可以研究研究
select re.dfileNo,count(re.ifileNo) from (select d.file_No dfileNo,i.file_No ifileNo,d.record_date from (select file_no,record_date from t_dossier where record_date between to_date('2018-2-6','yyyy-mm-dd') and to_date('2018-2-6','yyyy-mm-dd')) d, t_Inner_Catalog i where i.file_No like CONCAT(d.file_No,'-%')) re group by re.dfileNo
作用是根据一个时间段查询这个档案号的文档数量,其中文档表和档案表只有file_no是有关联的,但是不全等(文档.file_no = (档案.file_no)-(文档编号))
效率很低,三分钟查询1000条数据(数据总量为200000)
这次发博客也主要是为了寻求帮助,有没有大神可以分享一下那种不需要添加新字段(比如说在文档中添加档案id字段)却能提高sql效率的语句
至此,感谢分享
相关文章推荐
- hibernate实体映射的一些可选优化/配置
- hibernate实体映射的一些可选优化/配置
- hibernate实体配置关系映射&延迟加载
- 使用MyEclipse自动生成hibernate映射文件和实体类(My SQL数据库)
- hibernate实体类型映射文件
- Hibernate:利用HibernateTools和ANT自动构建hibernate对象、映射文件、表之间的转换
- Hibernate实体映射笔记
- Hibernate对象状态、缓存、懒加载、映射
- Hibernate实体对象的三种状态
- 映射Hibernate对象标识符
- Hibernate(六):实体关系映射
- [置顶] ORM框架Hibernate (二) 对象到关系多对一映射
- Hibernate 映射实体关联关系(一)
- Hibernate中实体映射时的命名策略(1)
- Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件
- 解决Hibernate原生SQL映射问题 - SQL查询出来的结果映射为值对象
- hibernate实体映射之讲解
- Hibernate 实体关联关系映射【转】
- SSH——hibernate 利用注解实现实体关联映射详解
- Hibernate实体关系映射:双向主键一对一关联