猿问

SpringMVC整合hibernate自己写了一个通用Dao层,我想把get方法做的更加强大点

关键是这个get方法,现在只是能够支持简单的键值对:


@SuppressWarnings("unchecked")

    @Override

    public T getByElse(Map<String, Object> params) {

        if(params.size() == 0) {

            return null;

        } else {

            Iterator<Entry<String, Object>> iterator = params.entrySet().iterator();

            String sql = "from " + clazz.getSimpleName() + " where ";

            while (iterator.hasNext()) {

                Entry<String, Object> entry = iterator.next();

                sql += entry.getKey() + " = :" + entry.getKey();

                if(iterator.hasNext()) {

                    sql += " and ";

                }

            }

            Query query = sessionFactory.getCurrentSession().createQuery(sql);

            iterator = params.entrySet().iterator();

            while (iterator.hasNext()) {

                Entry<String, Object> entry = iterator.next();

                query.setParameter(entry.getKey(), entry.getValue());

            }

            try {

                return (T)query.uniqueResult();

            } catch (Exception e) {

                return null;

            }

        }

    }

    我想让这个getByElse方法也能够支持模糊查询,但水平有限,希望高手指点


猛跑小猪
浏览 409回答 1
1回答

慕田峪4524236

1.选种数据结构,一个信息位存放是否like,或大于小于,between and的类型种类,一个存放占位名称,一个存放参数值,自己程序判断编写hql2.不想搞复杂自己拼hql的话,直接使用qbc
随时随地看视频慕课网APP

相关分类

Java
我要回答