1.在学习hql之前,我们肯定都学过了sql语句,所以我们肯定能学习hql语句,因为语法都是相差无几的。
hql的语法:select ...from...table...where...group by..having...order by..
看了是不是跟sql语句相差无几,或者说是一样呢?
2.sql语句跟hql语句的区别?
我觉得这两种数据库操作语言最大的不同就是对于操作的对象不一样,首先sql语句操作的是表,而hql语句操作的实体,这个是最大的区别,其实hql语句最后都要转化成sql语句的。
3.知道了区别我觉得就可以基本的使用了。(hql)
package com.hibernate.test01.dao.pojo;
import javax.persistence.Embeddable;
public class Address {
private String aid;
private String provice;
private String city;
public Address() {
// TODO Auto-generated constructor stub
}
public String getAid() {
return aid;
}
public void setAid(String aid) {
this.aid = aid;
}
public String getProvice() {
return provice;
}
public void setProvice(String provice) {
this.provice = provice;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Address(String aid, String provice, String city) {
super();
this.aid = aid;
this.provice = provice;
this.city = city;
}
}
查询所有语句:from Address as a;是不是很简单?as取别名
查询其中的属性: select new map(a.aid,a,provice,a.city) from Address a;
a.aid,a,provice,a.city 这些都是实体类里面的属性,不是数据表里面的
删除语句语句:delete from Address a;跟sql都一样,只是操作的是实体类
添加以及更新操作:insert into Address a(a.aid,a.provice,a.city)values(?.?,?)
update Adress a set a.aprovice=?,a.city=? where a.aid=? 或者是update Address a set a.provice=:provice,a.city=:city where a.aid=:aid 只是执行hql语句传入参数的语句不一样
其他复杂的也是这样的,参照sql语句
执行的语句:
Query query = session.createQuery();
query.setString(index从0开始,要设置的值) =?这种当时
query.setParameter(”:这个的名“, 传进来的值)
query.executeUpdate()来执行。
有不对的地方欢迎指正,谢谢各位亲了。