Hibernate学习

配置本地提示文件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.0

public 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", "%小%"));
		
		// 没有添加条件,查询所有的数据
		List<User> list = 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中存在,用处将返回的数据变为实体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值