hibernateModel使用方式,及扩展hibernate标量查询与实体查询

编程入门 行业动态 更新时间:2024-10-06 18:28:29

hibernateModel使用方式,及扩展hibernate<a href=https://www.elefans.com/category/jswz/34/1716290.html style=标量查询与实体查询"/>

hibernateModel使用方式,及扩展hibernate标量查询与实体查询

2019独角兽企业重金招聘Python工程师标准>>>

讲完了hibernateBean的标准用法,现在我们来讲解下hibernateModel的用法

日常开发中,总有很多列,页面或者接口,仅仅需要提供单张表的部分属性,或者多张表的每个部分属性的集合,那么此时,如果使用1对多,或者多对1 的方式可能不是很便捷了;这是可采用中间业务Model来实现查询显示

举个栗子:

    A表 学生id,学生名,学生性别,年龄等等

    B表 学校id, 学生id,奖金remark(干了某某事,备注什么的)等等

需要查询列表:

    查询出所有学校,哪些学生(指定学生名),干了哪些事

    仅需字段: 学校名,学生名,奖金,remark

 

Model设计 

注意: 这里不指定@Table


@Entity
public class SchoolStudentModel  {private String schoolName;/*** 学生名*/private String studentName;private String remark;@Column(name = "school_name")public final String getSchoolName() {return schoolName;}public final void setUserId(String schoolName) {this.schoolName= schoolName;}@Column(name = "student_name")public final String getStudentName() {return studentName;}public final void setStudentName(String studentName) {this.studentName= studentName;} @Column(name = "remark")public final String getRemark() {return remark;}public final void setRemark(String remark) {this.remark= remark;}

 

Dao查询

注意使用了addEntity(实体查询) 映射Model实体类参数

args 为参数集合, ? 占位符表示;

		Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();Query query = session.createSQLQuery(sql).addEntity(SchoolStudentModel.class);for(int i=0; args!=null && args.size()>0 && i<args.size(); i++){query.setParameter(i,args.get(i));}return  query.list();

 

Sql 语句

select school.school_name,student.student_name,school.remak 
from rem_shcool school inner join student_mian student
on school.student_id=student.student_id 

 

整理下,因为时时有一样的查询列,所以扩展深入到了标量查询,和实体查询,以上是默认的实体查询

一 : 标量查询 

 

了解引用至:   

 就算query是使用*来查询的,可能获得超过列出的这三个字段,也 仅仅会返回这三个字段。
对全部或者部分的标量值不设置类型信息也是可以的。
sess.createSQLQuery("SELECT * FROM CATS") .addScalar("ID", Hibernate.LONG) .addScalar("NAME") .addScalar("BIRTHDATE")

 

上面的addScalar()方法有两个作用

1:指定查询结果包含哪些数据列,没有被addScalar()选中的数据列不会出现在查询结果中,所以查询结果中只能遍历出来name和student_id两个数据列的值。

2:指定查询结果中数据列的数据类型。

二:实体查询:

实体查询与标量查询不同的是:标量查询只是返回一些标量的结果集,而实体查询返回的是数据表中全部数据列。

实体查询的两个条件:
1:查询返回某个数据表的全部数据列,要选出全部数据列(可以在SQL字符串中使用*来表示返回所有列)

2:该数据表有对应的持久化类映射

利用SQLQuery提供的addEntity()方法,将查询结果转换成实体。

 

 

转载于:

更多推荐

hibernateModel使用方式,及扩展hibernate标量查询与实体查询

本文发布于:2024-02-19 18:39:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765735.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:标量   实体   方式   hibernateModel   hibernate

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!