jcreate java开发工具
private static final String HQL_BADGUY_TO_FRIEND = "update Contact set relation_id = 1, updateTime = :updateTime where host = :hostEmail and guest = :guestEmail";
Session session = getSession();
Query query = session.createQuery(HQL_BADGUY_TO_FRIEND);
query.setString("hostEmail",hostEmail);
query.setString("guestEmail",guestEmail);
query.setDate("updateTime",Calendar.getInstance().getTime());
query.executeUpdate();
session.close();
Hibernate 中如果直接使用
Session.update(Object o);
会把这个表中的所有字段更新一遍。
比如:
view plaincopy to clipboardprint?
public class TeacherTest {
@Test
public void update(){
Session session = HibernateUitl.getSessionFactory().getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher) session.get(Teacher.class, 3);
t.setName("yangtb2");
session.update(t);
session.getTransaction().commit();
}
}
public class TeacherTest {
@Test
public void update(){
Session session = HibernateUitl.getSessionFactory().getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher) session.get(Teacher.class, 3);
t.setName("yangtb2");
session.update(t);
session.getTransaction().commit();
}
}
Hibernate 执行的SQL语句:
view plaincopy to clipboardprint?
Hibernate:
update
Teacher
set
age=?,
birthday=?,
name=?,
title=?
where
id=?
Hibernate:
update
Teacher
set
age=?,
birthday=?,
name=?,
title=?
where
id=?
我们只更改了Name属性,而Hibernate 的sql语句 把所有字段都更改了一次。
这样要是我们有字段是文本类型,这个类型存储的内容是几千,几万字,这样效率会很低。
那么怎么只更改我们更新的字段呢?
有三中方法:
1.XML中设置property 标签 update = "false" ,如下:我们设置 age 这个属性在更改中不做更改
view plaincopy to clipboardprint?
<property name="age" update="false"></property>
<property name="age" update="false"></property>
在Annotation中 在属性GET方法上加上@Column(updatable=false)
view plaincopy to clipboardprint?
@Column(updatable=false)
public int getAge() {
return age;
}
@Column(updatable=false)
public int getAge() {
return age;
}
我们在执行 Update方法会发现,age 属性 不会被更改
view plaincopy to clipboardprint?
Hibernate:
update
Teacher
set
birthday=?,
name=?,
title=?
where
id=?
Hibernate:
update
Teacher
set
birthday=?,
name=?,
title=?
where
id=?
缺点:不灵活····
2.第2种方法··使用XML中的 dynamic-update="true"
view plaincopy to clipboardprint?
<class name="com.sccin.entity.Student" table="student" dynamic-update="true">
<class name="com.sccin.entity.Student" table="student" dynamic-update="true">
OK,这样就不需要在字段上设置了。
但这样的方法在Annotation中没有
3.第三种方式:使用HQL语句(灵活,方便)
使用HQL语句修改数据
view plaincopy to clipboardprint?
public void update(){
Session session = HibernateUitl.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("update Teacher t set t.name = 'yangtianb' where id = 3");
query.executeUpdate();
session.getTransaction().commit();
}
public void update(){
Session session = HibernateUitl.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("update Teacher t set t.name = 'yangtianb' where id = 3");
query.executeUpdate();
session.getTransaction().commit();
}
Hibernate 执行的SQL语句:
view plaincopy to clipboardprint?
Hibernate:
update
Teacher
set
name='yangtianb'
where
id=3
Hibernate:
update
Teacher
set
name='yangtianb'
where
id=3
这样就只更新了我们更新的字段······
分享到:
相关推荐
org.eclipse.swt.SWT.class org.eclipse.swt.SWTError.class org.eclipse.swt.SWTException.class org.eclipse.swt.accessibility.ACC.class org.eclipse.swt.accessibility.Accessible.class org.eclipse.swt....
Eclipse是一款广泛使用的开源集成开发环境(IDE),它支持多种编程语言,如Java、Python、C++等。Eclipse Color Theme是Eclipse平台上的一个重要插件,它为开发者提供了丰富的代码高亮显示主题,帮助改善代码阅读...
Eclipse是一款广泛使用的开源集成开发环境(IDE),它支持多种编程语言,如Java、C++、Python等。在长时间的编码工作中,一个舒适的主题能够帮助程序员减轻视觉疲劳,提高工作效率。"eclipse 黑色主题插件 绿色版...
Eclipse是一款广受欢迎的开源集成开发环境(IDE),主要用于Java编程,但也支持其他语言如C++、Python等。"eclipse免安装绿色版"是指无需通过传统安装过程,只需解压后配置相关环境变量即可使用的版本。这种版本方便...
Eclipse-jee-mars-R-win32-x86_64位官方绿色版.zip是一个针对Windows平台的64位版本的Eclipse集成开发环境(IDE)的压缩包,特别为Java企业级(J2EE)应用程序开发设计。该版本发布于2015年6月30日,是当时Eclipse ...
Eclipse 下载安装及配置 Eclipse 是一个开源的集成开发环境(IDE),它可以帮助开发者更方便地编写、编译和调试 Java 程序。下面将介绍如何从官网上下载 Eclipse,以及 Eclipse 的安装和配置。 一、Eclipse 下载 ...
### 删除Eclipse 3.4的configuration目录导致Eclipse无法启动的解决办法 在使用Eclipse 3.4的过程中,有些用户可能会遇到这样的情况:为了安装新的插件或添加新的jar包,他们选择了删除Eclipse安装目录下的`...
本书细致而全面地讲解了EclipseWeb开发技术,共分5篇20章,内容包括Eclipse开发环境的搭建;利用Eclipse开发Java程序;Eclipse下SWT、Junit、Ant的使用方法以及Web应用开发;Eclipse下Struts、CVS的应用以及数据库...
【标题】"适用1.8.0版本的eclipse"所指的核心内容是Eclipse集成开发环境(Integrated Development Environment)与Java 1.8.0的兼容性。Eclipse是一款广泛应用的开源IDE,尤其在Java开发领域,它提供了丰富的功能,...
AngularJS Eclipse 1.2.0 插件是专为开发者设计的一款强大的工具,它将AngularJS框架与Eclipse集成,极大地提升了开发AngularJS应用程序的效率。Eclipse是一款广泛使用的开源集成开发环境(IDE),而AngularJS则是一...
我们在编写js的时候,如果采用了jquery框架,当然很希望Eclipse能帮我们完成代码自动完成的功能了,但Eclipse默认只是支持js的代码自动完成,利用这个插件,可以让Eclipse支持jquery的代码自动完成功能(前提:...
Eclipse是一款广泛使用的开源集成开发环境(IDE),尤其在Java编程领域中占据着重要的地位。2018年的Eclipse版本提供了许多改进和新特性,旨在提升开发者的效率和体验。下面将详细介绍Eclipse IDE以及2018年最新版的...
### Eclipse RCP 入门详解 #### 一、Eclipse RCP 概述 **Eclipse RCP**(Rich Client Platform)是一种构建丰富客户端应用程序的框架,它利用Eclipse平台的强大功能来创建高度定制化的桌面应用程序。通过RCP,...
【标题】"eclipse4.4.2中文离线汉化包"涉及到的是Eclipse集成开发环境的一个中文语言包,用于将原本英文界面的Eclipse转换为中文显示,方便中文用户进行开发工作。Eclipse 4.4.2是Eclipse的Luna版本,发布于2014年,...
根据给定的日文版《Eclipse操作手册》的内容,我们可以提炼出以下关键知识点: ### Eclipse 操作手册概览 #### 一、Eclipse 的安装 ##### 1.1 J2SE 的安装 - **背景**: 在安装 Eclipse 之前,必须先安装 Java 2 ...
JD-Eclipse is a plug-in for the Eclipse platform. It allows you to display all the Java sources during your debugging process, even if you do not have them all. Installation Download JD-Eclipse ZIP ...
Linux32_Eclipse_Mars是针对32位Linux操作系统的一款Eclipse Mars集成开发环境(IDE)的安装包。Eclipse Mars是Eclipse项目的一个重要版本,它为软件开发者提供了丰富的功能,尤其在Java开发领域中广泛应用。这个...
Eclipse中的JAXB插件通常是通过Eclipse的Marketplace或者安装向导来获取的,如Eclipse XML Development Tools (XSD)或JAXB Tools等。这些插件提供了以下主要功能: 1. **XML Schema到Java类的生成**:用户可以导入...
Eclipse 4.2 "Juno" 是一个重要的版本,它是Eclipse集成开发环境(IDE)的一个里程碑。这个版本在2012年发布,带来了许多新特性、改进和优化,旨在提升开发者的工作效率和用户体验。Eclipse 4.2 的中文语言包是专门为...
Eclipse 2018-09是该软件的一个特定版本,发布于2018年9月,提供了许多更新和改进,以增强开发者的体验和效率。 首先,Eclipse 2018-09在Java开发方面具有卓越的性能。它集成了最新的JDT(Java Development Tools)...