2019/10/16 hibernate最后一战 + 发现java解决的一些常识问题

java常识问题----------------------

两个字符串不能用 == 这个运算符来表示两个字符串是相等的
而是 字符串1.equal(字符串2) 才能用来判断

过滤器常识问题----------------------

1*
Web容器加载的顺序:web.xml文件中配置的Filter的倒序
拦截执行顺序:web.xml文件中配置的Filter的正序
销毁顺序:web.xml文件中配置的Filter的倒序

2*

HttpServletRequest req = (HttpServletRequest)request;
			HttpServletResponse resp = (HttpServletResponse)response;
			StringBuffer aa= req.getRequestURL();
			String url = req.getRequestURI();
			System.out.println(aa);
			System.out.println(url);

在这里插入图片描述
第一个是url的 第二个是 uri的

3*
endsWith()?/判断字段的最后一个是否包含
startsWith(): if(a.startsWith(b)) //判断字符串a 是不是以字符串b开头。

hibernate 今日学习5种查询功能----------------------

No.1 对象导航查询

User user = session.get(User.class, 1);
			
			Set<Role> setUser = user.getSetRole();
			
			System.out.println(setUser.size());

No.2 OID查询

User user = session.get(User.class, 1);
			System.out.println(user.toString());

No.3 HQL查询

			//全部查询
//			Query query =  session.createQuery("from Customer");
			
//			List<Customer> list = query.list();
//			
//			for(Customer customer : list) {
//				System.out.println(customer.toString());
//			}
			
			//条件查询
//			Query query = session.createQuery("from Customer where cid=? and name=?");
//			query.setParameter(0,2);
//			query.setParameter(1, "蓝源公司");
//			List<Customer> list = query.list();
//			for(Customer customer: list) {
//				System.out.println(customer.toString());
//			}
			
			//模糊查询
//			Query query = session.createQuery("from Customer where name like ?");
//			query.setParameter(0,"%蓝%");
//			List<Customer> list = query.list();
//			for(Customer c : list) {
//				System.out.println(c.toString());
//			}
			
			
			//排序查询
//			Query query = session.createQuery("from Customer order by cid desc");
//			List<Customer> list = query.list();
//			for(Customer c : list) {
//				System.out.println(c.toString());
//			}
			
			//分页查询
//			Query query = session.createQuery("from Role");
//			query.setFirstResult(0);
//			query.setMaxResults(3);
//			
//			List<Role> list = query.list();
//			for(Role c : list) {
//				System.out.println(c.toString());
//			}
			
			//投影查询
//			Query query = session.createQuery("select role_pro from Role");
//			
//			List<Object> list = query.list();
//			for(Object c : list) {
//				System.out.println(c);
//			}
			
			//聚集函数的方法
//			Query query = session.createQuery("select count(*) from Customer");
//			Object obj = query.uniqueResult();
//			Long objl = (Long)obj;
//			int i = objl.intValue();
//			System.out.println(obj);

*聚集函数的使用count、sum、avg、max、min

  • select count() from 实体类名称
    No.4 QBC查询
			//查询所有
//			Criteria cr = session.createCriteria(Role.class);
//			List<Role> list = cr.list();
//			for (Role role : list) {
//				System.out.println(role.toString());
//			}
			
			//条件查询
//			Criteria cr = session.createCriteria(Role.class);
//			cr.add(Restrictions.eq("r_id", 1));
//			cr.add(Restrictions.eq("role_pro", "战士"));
//			cr.add(Restrictions.ilike("role_name", "%生%"));
//			
//			List<Role> list = cr.list();
//			for (Role role : list) {
//				System.out.println(role.toString());
//			}
			
			//排序查询
//			Criteria cr = session.createCriteria(Role.class);
//			cr.addOrder(Order.asc("r_id"));
//			cr.addOrder(Order.desc("r_id"));
//			List<Role> list = cr.list();
//			for (Role role : list) {
//				System.out.println(role.toString());
//			}
			//分页查询
//			Criteria cr = session.createCriteria(Role.class);
//			cr.setFirstResult(0);
//			cr.setMaxResults(3);
//			List<Role> list = cr.list();
//			for (Role role : list) {
//				System.out.println(role.toString());
//			}
			
			//统计查询
//			Criteria cr = session.createCriteria(Role.class);
//			cr.setProjection(Projections.rowCount());
//			Object obj = cr.uniqueResult();
//			System.out.println(obj);
			
			//离线查询
//			DetachedCriteria dc = DetachedCriteria.forClass(Role.class);
//			Criteria cr = dc.getExecutableCriteria(session);
//			
//			List<Role> list = cr.list();
//			for (Role role : list) {
//				System.out.println(role.toString());
//			}

离线查询的意思
条件查询的离线查询有DetachedCriteria来代表,DetachedCriteria类允许在一个session范围外创建一个 查询,并且可以使用任意Session来执行它。

No.5HQL多表查询
(1)内连接:from Customer c inner join c.setLinkMan
(2)左外连接:from Customer c left outer join c.setLinkMan
(3)右外连接:from Customer c right outer join c.setLinkMan
(4)迫切内连接: from Customer c inner join fetch c.setLinkMan
(5)迫切左外连接:from Customer c left outer join fetch c.setLinkMan

!!! 左外连接返回list中每部分是数组,迫切左外连接返回list每部分是对象

hibernate 今天出现了的错误----------------------

1、

Exception in thread "main" java.lang.StackOverflowError
	at java.util.AbstractCollection.toString(AbstractCollection.java:454)
	at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:300)
	at java.lang.String.valueOf(String.java:2994)
....................................................以下省略了10000个错误

这个错误的意思是堆栈溢出
解决的方法就是
把这段红字删掉,因为这段红字要显示的是User里面 一对多的数组对象 toString会让它溢出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值