java学习之hibernate3

 使用HQL查询所有User记录

Session session = HibernateUitl.getOpenSession();
		Transaction transaction = session.beginTransaction();
		
		String hql="from com.lanou3g.User";
		Query<User> query = session.createQuery(hql);
		//预见结果集
		//(多个就用list处理 单个就用uniqueResult处理)
		List<User> list = query.list();
		System.out.println(list);
		
		transaction.commit();
		session.close();

 使用冒号占位符

		Session session = HibernateUitl.getOpenSession();
		Transaction transaction = session.beginTransaction();
		
		//使用:问号占位符替代
		//:后面相当于是占位符的名字
		//在替换时 直接使用:后面的名字即可
		//注意:冒号后面不要加空格 加了也会被算为名字的一部分
		String hql="from com.lanou3g.User where?"+"username=:username and password=:password";
		Query<User> query = session.createQuery(hql);
		query.setParameter("username", "wanglong");
		query.setParameter("password", "123");
		User user = query.uniqueResult();
		System.out.println(user);
		
		transaction.commit();
		session.close();

 分页

                Session session = HibernateUitl.getOpenSession();
		Transaction transaction = session.beginTransaction();	
		String hql="from User";
		Query<User> query = session.createQuery(hql, User.class);
		//添加分页
		//limit first,max
		query.setFirstResult(0);
		query.setMaxResults(2);
		List<User> list = query.list();
		System.out.println(list);
		
		transaction.commit();
		session.close();

 无语句查询总记录数

                Session session = HibernateUitl.getOpenSession();
		Transaction transaction = session.beginTransaction();
				
		//获取Criteria对象
		Criteria criteria=session.createCriteria(User.class);
		criteria.setProjection(Projections.rowCount());
		Long num = (Long)criteria.uniqueResult();
		System.out.println(num);
		
		transaction.commit();
		session.close();

 配置一对多关系

                <!-- 配置一对多关系
    			name 表示实体类对象中的属性名
    			column:两张表联系的外键
    			注意:外键名 必须填一致 否则会多创建一个外键出来
    			class:与哪个类进行联系(一对多)
    		 -->
    		 <!-- 
    		 级联操作
    		 作用:减化代码量(量不大)
    		 cascade
    		 save-update    级联保存和更新
    		 delete		级联删除
    		 all		save-update+delete
    		 建议:要写最多写到save-update
    		  -->
    		  <!-- 
    		  	inverse(反转)
    		  	默认值是 false 不放弃维护外键
    		  			true  放弃维护外键
    		  	作用:提高效率的
    		  	linkman能不能放弃维护外键?
    		  	一对多的表关系
    		  	如果要放弃维护外键关系
    		  	只能是一的一方放弃维护
    		   -->
               <set name="linkmans" cascade="save-update" inverse="true">
    			<key column="lkm_cust_id"></key>
    			<one-to-many class="Linkman"/>
    		</set>               
 配置多对一关系
                        <!-- 配置多对一的关系
    				name 表示多对一对象的属性名
    				class表示多对一对象的类
    				column表示外键
    				注意:上面在配置property时 不要重复配置外键
    			 -->
    	          <many-to-one name="customer" class="Customer" column="lkm_cust_id"></many-to-one>
 配置多对多关系
                 <!-- 配置多对多关系
    			name 容器名字
    			table 中间表的名字
    			key column 中间表引用我的id
    			class 对应那个表的类名
    			column 对应那个表的外键(引用那个表的键)
    		 -->
    		 <!-- 
    		 	注意:多对多时 必须要有一方放弃时对外键的维护
    		  -->
    		<set name="roles" table="sys_user_role" inverse="true">
    			<key column="user_id"></key>
    			<many-to-many class="Role" column="role_id"></many-to-many>
    		</set>
                <set name="users" table="sys_user_role">
			<key column="role_id"></key>
			<many-to-many class="User" column="user_id"></many-to-many>
		</set>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值