List findCollectionByConditionNoPage(String codition,Object[] params, Map orderby);
}
第二步: 实现接口的类:
Class entityClass = TUtils.getTClass(this.getClass());
public class TUtils {
/**泛型转换,目的获取子类传递父类的真实类型,也就是T所对应的类型*/
public static Class getTClass(Class entity) {
ParameterizedType type = (ParameterizedType)entity.getGenericSuperclass();
Class entityClass = (Class) type.getActualTypeArguments()[0];
return entityClass;
}
}?
/**指定查询条件查询对应的结果,返回List(不分页)*/
/**
* FROM ElecText o WHERE 1=1 #Dao层
AND o.textName LIKE '%张%' #Service层
AND o.textRemark LIKE '%张%' #Service层
ORDER BY o.textDate ASC,o.textName DESC #Service层
*/
public List findCollectionByConditionNoPage(String condition,
final Object[] params, Map orderby) {
//定义hql语句
String hql = "FROM "+entityClass.getSimpleName()+" o WHERE 1=1";
//定义排序语句
String orderbyHql = this.orderbyHql(orderby);
//定义最终的语句
final String finalHql = hql + condition + orderbyHql;
//执行语句一
//List list = this.getHibernateTemplate().find(finalHql, params);
//执行语句二
// SessionFactory sf = this.getHibernateTemplate().getSessionFactory();
// Session s = sf.getCurrentSession();
// Query query = s.createQuery(finalHql);
// List list = query.list();
//执行语句三
List list = this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(finalHql);
if(params!=null && params.length>0){
for(int i=0;i orderby) {
StringBuffer buffer = new StringBuffer("");
if(orderby!=null && orderby.size()>0){
buffer.append(" order by ");
for(Map.Entry map:orderby.entrySet()){
buffer.append(map.getKey()+" "+map.getValue()+",");
}
//删除最后一个逗号
buffer.deleteCharAt(buffer.length()-1);
}
return buffer.toString();
}
下面是根据不同的业务来编写不同的代码。
第三步:
service接口:
public interface IElecTextService {
public static final String SERVICE_NAME = "com.itheima.elec.service.impl.ElecTextServiceImpl";
List findCollectionByConditionNoPage(ElecText elecText);
}
第四步:
service实现
/**指定查询条件查询对应的结果,返回List*/
/**
* FROM ElecText o WHERE 1=1 #Dao层
AND o.textName LIKE '%张%' #Service层
AND o.textRemark LIKE '%张%' #Service层
ORDER BY o.textDate ASC,o.textName DESC #Service层
*/
public List findCollectionByConditionNoPage(ElecText elecText) {
//查询条件
String condition = "";
List