在使用hibernate过程,对于复杂的查询,还是得使用sql语句来查询,但是查询出来的数据如何装载到bean中,因为查出来的数据可能会是关联好几个表里字段,对于这种情况,如何将这些字段直接装载到java bean中呢。下面给出一个例子,希望对大家有帮助。
实体类:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.GenericGenerator;
@Entity
//表名与类名不相同时重新定义表名.
@Table(name = "demo")
//默认的缓存策略.
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Demo {
@Id
@Column(length = 32)
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
@Column(nullable =true)
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
SQL语句:
List list = this.getSession().createSQLQuery("select bankcar_id id ,carname name from Bankcar")
.addEntity(Demo.class).list();
for (int i = 0; i < list.size(); i++) {
Demo d = (Demo)list.get(i);
System.out.println(d.getId());
}
这个例子只是为了说明问题,没有实际的意义。
通过SQL语句中的别名可以装载到其他对象中的bean属性,只要名字一样就行。
还有,如果名字有重复的,那么以第一次出现的那个名字的值为准,后面的值将被忽略。
分享到:
相关推荐
例如,可以创建`UserRepository`接口,定义CRUD操作,并在实现类中具体实现这些方法,使用JPA或者MyBatis的查询语句。 控制层(Controller Layer)是接收HTTP请求并调用服务层的方法。例如,创建`UserController....
10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化...
Hibernate的出现,可以解决传统JDBC编程时所遇到的许多问题,比如SQL语句的手工编码、数据库连接管理的复杂性以及数据模型到对象模型转换的困难等。Hibernate通过配置文件来定义Java对象和数据库中表的映射关系,...
11.4.4. 使用原生SQL的查询 11.5. 修改持久对象 11.6. 修改脱管(Detached)对象 11.7. 自动状态检测 11.8. 删除持久对象 11.9. 在两个不同数据库间复制对象 11.10. Session刷出(flush) 11.11. 传播性持久化...
4. **创建SQL语句对象**:通过`Connection`对象调用`createStatement()`方法创建`Statement`对象,用于执行SQL语句。 5. **执行SQL语句**:利用`Statement`对象的`executeQuery()`方法执行查询,它会返回一个`...
**Hibernate HQL 全攻略** ...以上内容覆盖了HQL的大部分核心特性,通过熟练掌握这些知识点,可以高效地在Hibernate中进行数据查询和操作。学习并实践这些HQL技巧,将极大地提升你在Java持久层开发中的能力。
11.4.4. 使用原生SQL的查询 11.5. 修改持久对象 11.6. 修改脱管(Detached)对象 11.7. 自动状态检测 11.8. 删除持久对象 11.9. 在两个不同数据库间复制对象 11.10. Session刷出(flush) 11.11. 传播性持久化...
10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化...
Hibernate负责在应用层和数据库之间转换这些对象,使得开发人员能够以面向对象的方式操作数据库,而无需直接编写SQL语句。 #### 六、缓存策略 Hibernate支持一级缓存和二级缓存。一级缓存是`Session`级别的缓存,...
使用原生SQL的查询 11.5. 修改持久对象 11.6. 修改脱管(Detached)对象 11.7. 自动状态检测 11.8. 删除持久对象 11.9. 在两个不同数据库间复制对象 11.10. Session刷出(flush) 11.11. 传播性持久化...
通过Connection对象,程序能够执行SQL语句,进行数据的增加、查询、更新和删除等操作。 研究最后提供了实现数据库访问的关键代码示例,这些代码展示了如何通过JDBC API加载驱动程序、建立连接以及执行数据库操作。...
对象关系映射(Object-Relational Mapping,简称ORM)是一种程序技术,用于将关系型数据库中的数据映射为对象模型,使得开发者可以在面向对象的环境中操作数据库,而无需直接处理SQL语句。JavaEE环境下的ORM框架如...
6. Hibernate中:不看数据库,不看XML文件,不看查询语句,怎么样能知道表结构? 7.目前几种主流数据库软件的应用特点、适用范围各是什么? 8.存储过程和函数的区别 9.试述数据库完整保护的主要任务和措施。 10.请...
在使用JDBC时,通常包括四个步骤:装载数据库驱动、建立数据库连接、执行SQL语句以及断开连接。然而,频繁的连接建立和关闭会降低效率。 为了解决这个问题,引入了连接池技术。连接池预先创建一组数据库连接,并...
- 合理使用SQL语句:避免使用全表扫描,尽量使用WHERE子句来过滤数据。 - 分页查询:当查询结果集较大时,可以采用分页的方式返回结果。 - **知识点2:排序算法** 对于查询结果的排序也是常见的需求。Java提供...
4. MyBatis支持动态SQL语句,可以构建灵活的SQL语句来适应不同的数据查询需求。 5. iBatis的核心配置文件包括mapper.xml文件,其中定义了SQL映射语句和SQL片段等。 七、Web Service部分 WebService是一种基于Web的...
另外,MyBatis也可以替换Hibernate,正因为MyBatis的半自动特点,我们程序猿可以完全掌控SQL,这会让有数据库经验的程序猿能开发出高效率的SQL语句,而且XML配置管理起来也非常方便。 好了,如果你也认同我的看法,...
- **自定义DDL**:介绍了如何自定义数据定义语言(DDL)语句。 - **映射文件的模块化(Modularmappingfiles)**:通过模块化的映射文件来组织复杂的映射逻辑。 - **集合类**: - **持久化集合类...