问答详情
源自:2-2 SSH-案例:登录功能代码实现

对find方法的疑惑

对于find方法 为什么老师的直接是Find(String,String,String),而我的必须要Find(String,object)呢。框架版本的问题吗?

提问者:慕粉4310785 2017-03-11 23:12

个回答

  • Tatsutya
    2017-03-28 17:30:22

    Hibernate5 里面HibernateTemplateClass里的find源码
    (选中find按F3即可看到)
    @Override
        public List<?> find(final String queryString, final Object... values) throws DataAccessException {
            return executeWithNativeSession(new HibernateCallback<List<?>>() {
                @Override
                @SuppressWarnings({"rawtypes", "deprecation"})
                public List<?> doInHibernate(Session session) throws HibernateException {
                    org.hibernate.Query queryObject = (org.hibernate.Query)
                            ReflectionUtils.invokeMethod(createQueryMethod, session, queryString);
                    prepareQuery(queryObject);
                    if (values != null) {
                        for (int i = 0; i < values.length; i++) {
                            queryObject.setParameter(i, values[i]);
                        }
                    }
                    return queryObject.list();
                }
            });
        }


  • mkxuanlong
    2017-03-12 00:18:20

    不懂,不过我可以给你另外一种find(String queryString,Object[] values)的方式,变成

    this.getHibernateTemplate().find(hql,new String[]{employee.getUsername(),employee.getPassword()});

    效果和this.getHibernateTemplate().find(hql, employee.getUsername(),employee.getPassword());是一样的。