本文共 1542 字,大约阅读时间需要 5 分钟。
配置本地提示文件window–>preferences–>搜索xml catalog–>点user specified–>
add–>key type选uri key填http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd–>Location找hibernate-mapping-3.0public class Demo4 { /** * 按条件的查询,写法很麻烦 */ @Test public void run6(){ Session session = HibernateUtils.getSession(); Transaction tr = session.beginTransaction(); // 先获取到Criteria接口 Criteria criteria = session.createCriteria(User.class); // 添加查询的条件 select * from t_user where age > 18 // Criterion 是Hibernate提供的条件查询的对象,想传入条件的使用的工具类Restrictions // Restrictions提供的静态的方法,拼接查询的条件 criteria.add(Restrictions.gt("age", 18)); // 继续添加条件 criteria.add(Restrictions.like("name", "%小%")); // 没有添加条件,查询所有的数据 Listlist = criteria.list(); System.out.println(list); tr.commit(); session.close(); }
数据库中一对多(1:n)关系
在javaBean中的表示,以客户与联系人为例 在1方添加private Set linkmans=new HashSet(); 在n方添加private Customer customer;/** * 多对多的测试 * @author Administrator */public class Demo2 { /** * 现在:张三用户,有2个角色,经理和演员 * 让张三没有演员角色 */ @Test public void run3(){ Session session = HibernateUtils.getCurrentSession(); Transaction tr = session.beginTransaction(); // 查询张三用户 User u1 = session.get(User.class, 1L); // 查询角色 Role r2 = session.get(Role.class, 2L); u1.getRoles().remove(r2); tr.commit(); }
HQL语句
内连接 HQL内连接查询语句 例 List list=session.creatQuery(“from Customer c inner join c.linkmans”) 返回的的object数组即object[]去除重复结果 例List list=session.creatQuery(" from Customer c inner join fetch c.linkmans") 返回的是实体对象即迫切连接
然后再Set set= new HashSet(list) //fetch仅在HQL中存在,用处将返回的数据变为实体转载地址:http://dcosi.baihongyu.com/