hibernate笔记总结(四)

2014-11-24 10:24:18 · 作者: · 浏览: 4
y工具类
--------工程具有了jar,主配置文件,工具类-------------
g.进入DB Browser,选择数据表右键,
选择Hibernate Reverse Engine
h.选择生成文件所放位置,设置hbm.xml,
持久类POJO,DAO选项
i.设置hbm.xml中type采用的类型,以及ID主键的生成方式
j.设置数据表对应的持久类的名称(包名.类名),
最后单击完成

2)由持久类和映射文件生成数据表
a.在hibernate.cfg.xml主配置文件,添加hbm2ddl配置
update
hbm2ddl工具可以根据hbm内容生成ddl语句,创建或修改数据表结构
b.执行save添加操作,触发hbm2ddl工具


2.Hibernate查询,HQL查询语句
HQL属于面向对象查询语言,结构与SQL相似,
将SQL中表名和字段名用类名和属性替代.
类名和属性名大小写敏感.
1),单表查询,简单查询
查询所有:
String hql="from User";
Query query=session.createQuery(hql);
List users=query.list();
for(User u:users){
System.out.println(u);//在User中覆盖了toString方法
}
查询记录条数:
String hql="select count(*) from User";
Query query=session.createQuery(hql);
List num=query.list();
System.out.println("人数是"+num.get(0));
查询部分字段:
String hql="select email,nickname from User";
Query query=session.createQuery(hql);
List os=query.list();
for(Object[] o:os){
System.out.println("email:"+o[0]+"nickname:"+o[1]);
}
通过构造对象查询:
String hql="select new User(email,password,userIntegral) from User";
Query query=session.createQuery(hql);
List us=query.list();
for(User u:us){
System.out.println(u.getEmail()+" "+u.getPassword()+" "+u.getUserIntegral());
}
依据条件查询:
String hql="from User where nickname=:name";
Query query=session.createQuery(hql);
query.setString("name", "mingming");
List us=query.list();
for(User u:us){
System.out.println(u);
}
2). 联合查询:
step1:在各自类中添加对方类型的属性
public class User implements java.io.Serializable {
private Integer id;
private String email;
private String nickname;
private String password;
private Integer userIntegral;
private String isEmailVerify;
private String emailVerifyCode;
private String hasDeleted;
private long lastLoginTime;
private String lastLoginIp;
private Set

adrs;//到Address的一对多关系
......
}
public class Address implements java.io.Serializable {
private Integer id;
//private Integer userId;//添加多对一关系后,注释掉相关属性,防止发生异常,映射文件中也需作相应更改
private String receiveName;
private String fullAddress;
private String postalCode;
private String mobile;
private String phone;
private User user;//到User的多对一关系
......
}
step2:添加相关映射关系

































































step3.查询操作
StringBuffer hql = new StringBuffer();
hql.append("SELECT ");
hql.append(" d1.id,d1.nickname,d2.postalCode,d2.fullAddress ");
hql.append(" FROM User d1 join d1.adrs d2 ");//HQL语句中没有on
Query query = session.createQuery(hql.toString());
List list=query.list();
for (int i = 0; i < list.size(); i++) {
Object[] obj = (Object[]) list.get(i);
System.out.println(obj[0] + " " + obj[1] + " " + obj[2] + " "
+ obj[3]);
}
//分页查询
String hql="from User";
Query query=session.createQuery(hql);
query.setMaxResults(2);//指定抓取记录的最大数
query.setFirstResult(1);//指定抓取记录的起始点
List us=query.l