- 浏览: 223770 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (244)
- java (23)
- java多线程 (7)
- 综合 (1)
- oracle10g (24)
- div+css (1)
- Flex (27)
- java Nio (1)
- java设计模式 (8)
- struts2 (10)
- spring3.0 (5)
- SSH (9)
- dwr (5)
- hibernate3.6 (17)
- dom4j (1)
- sql优化 (5)
- Quartz任务调度框架 (1)
- AOP (3)
- JavaScript (18)
- jquery (3)
- JSF (9)
- ruby (1)
- 正则表达式 (1)
- 明日准备 (2)
- eclipse (3)
- gvim (1)
- CMS (1)
- linux (6)
- 杂 (4)
- java 设计模式 (1)
- MySql (10)
- JBPM (4)
- JSP技术 (1)
- Mybatis And Ibatis (2)
- 经验之谈 (10)
- WebService (1)
- java分布式(高性能,高可用,可伸缩) (0)
- springMvc (2)
- redis (0)
- ant (1)
- Nutz (6)
- 配置管理 (0)
- css+div (1)
- eChars (1)
- angularJs (1)
- D3 (3)
- Scala (1)
最新评论
-
Cobain_LI:
Cobain_LI 写道学习了,之前一直都没注意到有这样的问题 ...
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
Cobain_LI:
Cobain_LI 写道学习了,之前一直都没注意到有这样的问题 ...
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
Cobain_LI:
有个小失误,144和147行多了两个花括号
js面向对象2--js中工厂模式的演化(重要,详细) -
Cobain_LI:
学习了,之前一直都没注意到有这样的问题
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
YTT1121:
有网络拓扑发现的源代码么,或者您会编写么?可以有偿求购,搞科研 ...
flex 之twaver1--简单网络拓扑实现
1,Person
2,Address类
3,Person映射文件
4,Address映射文件
5,原生sql的测试类。
package com.supan.bean; import java.util.HashSet; import java.util.List; import java.util.Set; public class Person { private int id; private String name; private int age; private Set<Address> addresss = new HashSet<Address>(); public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Set<Address> getAddresss() { return addresss; } public void setAddresss(Set<Address> addresss) { this.addresss = addresss; } }
2,Address类
package com.supan.bean; public class Address { private int id; private String name; private String info; private String remark; private Person person; public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } }
3,Person映射文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping default-lazy="true" default-access="property" package="com.supan.bean" > <class name="Person" dynamic-update="true" dynamic-insert="true" table="myperson"> <id name="id" column="id" type="integer"> <generator class="native"/> </id> <property name="name" type="string" column="name" length="20"/> <property name="age" type="integer" column="age" length="3"/> <set name="addresss" inverse="true" cascade="all" > <key column="personid"/> <one-to-many class="Address"/> </set> </class> </hibernate-mapping>
4,Address映射文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping default-lazy="true" default-access="property" package="com.supan.bean" > <class name="Address" dynamic-update="true" dynamic-insert="true" table="address"> <id name="id" column="id" type="integer"> <generator class="native"/> </id> <property name="name" type="string" column="NAME" length="20"/> <property name="info" type="string" column="INFO" length="30"/> <property name="remark" type="string" column="REMARK" length="30"/> <many-to-one name="person" class="Person" column="personid" cascade="all"></many-to-one> </class> </hibernate-mapping>
5,原生sql的测试类。
/** * <测试Hibernate的原生态sql查询> <查询多列返回来的是Object数组的list> * * @author chenchaoyang * @since 2014-03-22 */ public void testSql1() { Configuration config = new Configuration().configure(); SessionFactory sf = config.buildSessionFactory(); Session sess = sf.openSession(); Transaction tx = (Transaction) sess.beginTransaction(); /** 注意 myperson是数据库中的表的名字,不是实体类的名字 */ String sql = "select * from myperson"; /** 注意饭回来的list中装的是Object[]数组,不同于hql查询是出来list中装的是实体 */ List<Object[]> result = (List<Object[]>) sess.createSQLQuery(sql) .list(); for (Object[] temp : result) { for (int i = 0; i < temp.length; i++) { System.out.println(temp[i]); } } tx.commit(); sess.close(); } /** * <测试Hibernate的原生态sql查询> <查询单列,返回的是单个的值而不是object数组> * * @author chenchaoyang * @since 2014-03-22 */ public void testSql2() { Configuration config = new Configuration().configure(); SessionFactory sf = config.buildSessionFactory(); Session sess = sf.openSession(); Transaction tx = (Transaction) sess.beginTransaction(); /** 注意 myperson是数据库中的表的名字,不是实体类的名字 */ String sql = "select p.id from myperson p"; /** 注意饭回来的list中装的是Object[]数组,不同于hql查询是出来list中装的是实体 */ List result = sess.createSQLQuery(sql).list(); if (result != null && result.size() > 0) { for (int i = 0; i < result.size(); i++) { System.out.println(result.get(i)); } } tx.commit(); sess.close(); } /** * <测试Hibernate的原生态sql查询--实体查询.的addEntity方法> * <addEntity方法:在查詢一个实体的全部属性的时候,用addEntity方法可以把 查询结构封装陈实体对象的list> * 注意:使用原生sql的实体查询,必须查询出所有的字段,如果有many-to-one也必须列出这个外键列,否则会报错 * clumn not found,最简单的就是select * * 下面的方法用select * * @author chenchaoyang * @since 2014-03-22 */ @SuppressWarnings(value = "unchecked") public void testSql3() { Configuration config = new Configuration().configure(); SessionFactory sf = config.buildSessionFactory(); Session sess = sf.openSession(); Transaction tx = (Transaction) sess.beginTransaction(); /** 注意 myperson是数据库中的表的名字,不是实体类的名字 */ String sql = "select * from address a"; /** 注意饭回来的list中装的是Object[]数组,不同于hql查询是出来list中装的是实体 */ List<Address> result = (List<Address>) sess.createSQLQuery(sql) .addEntity(Address.class).list(); for (Address address : result) { System.out.println(address.getId()); System.out.println(address.getName()); System.out.println(address.getInfo()); System.out.println(address.getRemark()); System.out.println(address.getPerson().getName()); System.out.println("********************"); } tx.commit(); sess.close(); } /** * 输出: Hibernate: select person0_.id as id0_0_, person0_.name as name0_0_, * person0_.age as age0_0_ from myperson person0_ where person0_.id=? 陈超阳 ******************** * 15 坂田五里围 我目前居住的地方 附近的消费很低 陈超阳 ******************** * 17 佛山 男孩 目前已经不再那里居住了 丽娟 ******************** */ /** * <测试Hibernate的原生态sql查询,的addEntity方法> * <addEntity方法:在查詢一个实体的全部属性的时候,用addEntity方法可以把 查询结构封装陈实体对象的list> * 注意:使用原生sql的实体查询,必须查询出所有的字段,如果有many-to-one也必须列出这个外键列,否则会报错 * 下面的方法用select 全部字段名称,和上一个方法的作用相同 * @author chenchaoyang * @since 2014-03-22 */ @SuppressWarnings(value = "unchecked") public void testSql4() { Configuration config = new Configuration().configure(); SessionFactory sf = config.buildSessionFactory(); Session sess = sf.openSession(); Transaction tx = (Transaction) sess.beginTransaction(); /** 注意 myperson是数据库中的表的名字,不是实体类的名字 */ String sql = "select a.id,a.name,a.info,a.remark,a.personid from address a"; /** 注意饭回来的list中装的是Object[]数组,不同于hql查询是出来list中装的是实体 */ List<Address> result = (List<Address>) sess.createSQLQuery(sql) .addEntity(Address.class).list(); for (Address address : result) { System.out.println(address.getId()); System.out.println(address.getName()); System.out.println(address.getInfo()); System.out.println(address.getRemark()); System.out.println(address.getPerson().getName()); System.out.println("********************"); } tx.commit(); sess.close(); } /** * <测试Hibernate的原生态sql查询同样可以传递参数> * @author chenchaoyang * @since 2014-03-22 */ @SuppressWarnings(value = "unchecked") public void testSql5() { Configuration config = new Configuration().configure(); SessionFactory sf = config.buildSessionFactory(); Session sess = sf.openSession(); Transaction tx = (Transaction) sess.beginTransaction(); /** 注意参数的形式是 :参数名字 */ String sql = "select a.id,a.name,a.info,a.remark,a.personid from address a where a.name = :name"; /** 注意传递参数的形式*/ List<Address> result = (List<Address>) sess.createSQLQuery(sql) .addEntity(Address.class).setString("name", "英国伦敦").list(); for (Address address : result) { System.out.println(address.getId()); System.out.println(address.getName()); System.out.println(address.getInfo()); System.out.println(address.getRemark()); System.out.println(address.getPerson().getName()); System.out.println("********************"); } tx.commit(); sess.close(); } /** * <测试Hibernate的原生态sql将查询结果映射成多个实体> * @author chenchaoyang * @since 2014-03-22 */ @SuppressWarnings(value = "unchecked") public void testSql6() { Configuration config = new Configuration().configure(); SessionFactory sf = config.buildSessionFactory(); Session sess = sf.openSession(); Transaction tx = (Transaction) sess.beginTransaction(); /** 注意参数的形式是 :参数名字 */ String sql = "select p.*,a.* from myperson p,address a where p.id = a.personid"; /** 注意传递参数的形式*/ List<Object[]> result = (List<Object[]>) sess.createSQLQuery(sql) .addEntity("p",Person.class) .addEntity("a",Address.class).list(); for(Object[] temp : result) { Person tempPerson = (Person)temp[0]; System.out.print(tempPerson.getId()); System.out.print(tempPerson.getName()); System.out.println(tempPerson.getAge()); Address tempAddress = (Address)temp[1]; System.out.print(tempAddress.getId()); System.out.print(tempAddress.getName()); System.out.println(tempAddress.getInfo()); } tx.commit(); sess.close(); }
发表评论
-
项目中关于配置文件中密码的加密处理
2014-08-08 23:32 5996注:原创作品,转载请注明出处。 在项目中,为了项目 ... -
Hibernate 调用返回值的存储过程
2014-08-04 02:20 2809注:原创作品,转载请注明出处。 曾一度认为orac ... -
hibernate 的sqlQuery对象可以操作非映射的数据库表
2014-05-23 01:17 1111注:原创作品,分享以供交流学习,转载请注明出处。 一直 ... -
hibernate sql查询 标量,实体查询
2014-05-11 23:10 889注:原创作品,分享以供交流学习,转载请注明出处 本博文实例假 ... -
hibernate hql查询 select 语句 和 from语句
2014-05-11 21:37 3973注:原创作品,分享以 ... -
hibernate 基于cglib的 事务代理
2014-03-24 23:39 825实例:使用hibernate 事务代理完成一个事务,添 ... -
hibernate 基本事务
2014-03-24 21:45 544业务需求:增加一个人,这个人有两个地址,人是一张表, ... -
hibernate一对多 双向 关联A(无连接表)
2014-03-17 00:27 897一,创建映射 1,多的一段 java文件中需要有一的属性,配置 ... -
hibernate多条件查询
2014-03-07 00:47 8091. Hibernate的Criteria这 ... -
javaSe中使用Hibernate
2014-03-01 18:16 489hibernate可用在javaSe中也可以用在java ... -
ssh中junit 测试 hibernate 1对多单向关联(不推荐使用这种关联)
2014-02-11 23:41 664主要介绍效率最低的一对多单向关联(实际中推荐使用一对多双向关联 ... -
hql select 子查询的属性可封装成list、具体对象,改变默认的数组类型
2014-01-22 16:35 7501,select子查询属性组成成list //把sel ... -
hql查询对象、查询属性
2014-01-22 15:34 606//查询整个对象集合 public void ... -
hibernate批量插入、删除、更新。
2014-01-22 15:09 741一:效率最不好的批量插入、更新。 //批量创建Pers ... -
hibernate多对一单向关联的两种映射方法
2014-01-22 14:19 525多对一关系实现两种方法: 1,在多的一段添加1的主键作为外键。 ... -
hibernate基本知识1
2014-01-21 16:21 529package com.supan.test; import ...
相关推荐
"hibernate执行原生sql语句" Hibernate 是一种流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在一些情况下,我们需要直接执行原生 SQL 语句,而不是使用 Hibernate 的...
如果你希望在配置文件中预定义一个原生SQL查询,可以使用`@NamedNativeQuery`注解。这使得代码更加整洁,易于管理。 ```java @Entity @Table(name = "User") @NamedNativeQuery( name = "User.findAll", ...
**Hibernate函数** ...当ORM无法满足需求时,原生SQL查询则提供了一种灵活的方式,以直接操作数据库的能力来解决特定问题。理解和熟练运用这些特性,对于提升Java开发中的数据库操作效率至关重要。
当然,原生SQL查询也有一些需要注意的地方。由于直接操作SQL,所以数据库的兼容性问题需要开发者自己处理。此外,如果查询结果需要映射到多个实体类,或者返回复杂的结果集,那么处理起来可能会比较麻烦,需要手动...
原生SQL查询可以返回结果集、单个值或自定义的结果类型。但需要注意的是,这种方式可能会丢失一些Hibernate的自动转换和事务管理功能。 总结,Hibernate提供了多种查询方式以适应不同场景的需求。HQL适用于大多数...
描述中提到"自己封装了原生sql的处理,模仿mybatis使用",这意味着开发者在项目中创建了一个类似MyBatis的简单SQL解析器。MyBatis是一个轻量级的持久层框架,它允许开发者编写原生的SQL语句并将其与Java代码绑定。...
首先,本地SQL查询(Native SQL)是指直接在Hibernate中使用原生的SQL语句进行查询,而不是使用HQL(Hibernate Query Language)。这允许开发者充分利用SQL的功能,比如进行复杂的统计计算或者处理特定数据库的特性...
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
在Java开发中,Hibernate作为一个非常流行的ORM框架,提供了多种查询方式,其中就包括了HQL(Hibernate Query Language)和原生SQL查询。本文将针对给定代码片段中的核心知识点——如何在Hibernate中使用原生SQL而非...
本文将深入探讨Hibernate如何通过SQLQuery接口执行原生SQL查询,并展示如何处理查询结果。 一、创建SQLQuery对象 在Hibernate中,我们通常通过Session接口的createSQLQuery方法来创建SQLQuery对象,例如: ```...
在某些情况下,开发者可能需要使用原生SQL查询来执行特定的数据库操作,这时就可以利用Hibernate的SQLQuery功能。本文将详细讲解如何使用Hibernate的SQLQuery进行本地SQL查询。 首先,创建SQLQuery实例是通过...
Hibernate支持两种类型的查询:原生SQL查询和Hibernate查询语言(HQL)。原生SQL查询允许开发者直接执行SQL语句,而HQL则是面向对象的查询语言,类似于SQL但更接近于Java。 4. 封装SQL查询结果为对象: - `...
例如,在`findAllbyString`方法中,使用了`getSession().createSQLQuery`方法来执行原生SQL查询: ```java String queryString = "Select * from h_attribute t where ciid=24 and Isinstance=1 and Isdisplay=1"; ...
查询数据的方法有两种实现,一种是基于HQL(Hibernate Query Language),另一种是基于原生SQL。 - 基于HQL的通用查询: HQL是Hibernate提供的面向对象的查询语言,可以方便地操作对象和属性。`select`方法接收一个...
由于Hibernate支持SQL Server 2005,因此我们可以通过HQL(Hibernate Query Language)或者原生SQL来实现分页查询。 **4. 分页实现** 在本项目中,分页通常包含以下步骤: - **计算总记录数**:使用Hibernate的...
这样的类通常会有一个用于执行分页查询的方法,比如`doPagingQuery`,它接受SQL查询语句、起始索引、每页大小等参数,并返回一个自定义的分页对象,如"Page.java"所示。 `Page.java`文件可能定义了一个名为`Page`的...
为了显示查询SQL,Hibernate 提供了`hibernatetool`,可以生成SQL脚本,或者通过配置`logging.level.org.hibernate.SQL`来打印SQL语句。此外,Hibernate的日志系统支持JDK Logging、Log4j 和 SLF4J。 **显示查询SQL...
在Hibernate中执行原生SQL查询时,可以通过`addScalar`方法指定返回值的类型,从而改变Hibernate对char类型字段的处理方式。具体操作如下: ```java Session session = this.getSession(); SQLQuery query = ...
原生SQL查询可能返回单一标量值或混合标量值与实体的结果。例如,查询猫的最大体重: ```java Double max = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat") .addScalar(...
5. **JPA的@NamedNativeQuery**: 如果项目同时使用了JPA,可以通过在实体类上定义@NamedNativeQuery注解来声明原生SQL查询。 在实际开发中,使用原生SQL时需注意以下几点: - **事务管理**: 由于原生SQL不在...