ssh数据库操作代码(一对多&多对一)

1.单表操作

    ssh框架建好后选择自动生成bean和dao层的代码


2.多表操作

   方法一: 例子:用户和视频,uid在视频表中为外键

//根据user的id查询关联表
	public Object findAllByVideo(int id) {
		log.debug("finding all User instances");
		try {
			String queryString = "select u from Video v,User u where v.user.id=u.id and v.id="+id;
			return getHibernateTemplate().find(queryString).get(0);
		} catch (RuntimeException re) {
			log.error("find all failed", re);
			throw re;
		}
	}
方法二:如果是自动生成的bean和dao可以利用session直接获取

        //session直接获取
	public Object findAllByVideo2(Class entityClass,int id){
			return getSession().get(entityClass, id);
	}
在service层:

Video video = (Video)videoDAO.findAllByVideo2(Video.class, 4);

如果要在web上用方法二,那么要在web.xml上添加以下代码不然会报:no session,如果不在web上运行,必须加session.close手动关闭session

       <!-- 配置Spring的OpenSessionInViewFilter,以解决懒加载异常 -->
	<filter>
		<filter-name>OpenSessionInViewFilter</filter-name>
		<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>OpenSessionInViewFilter</filter-name>
		<url-pattern>/(写action的名字)</url-pattern>
	</filter-mapping>
不然会报:no session

3.分页


hibernate 自带的query类有setFirstResult()和setMaxResults()两个方法,很方便,可以无需用sql分页语句,直接查询你想分页的所有信息就可以了

			//根据字段分页2
			public List<TVideo> findAllByPage2(String value,int currentPage, int pageSize){
				Session session = getSession();
				Query query = session.createQuery("from TVideo where VStatus="+"'"+value+"'");
				query.setFirstResult((currentPage-1)*pageSize);
				query.setMaxResults(pageSize);
				return query.list();
			}





     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值