

第一步: 定义接口: public interface ICommonDaoT { ListT findCollectionByConditionNoPage(String codition,Object[] params, MapString, String orderby); } 第二步: 实现接口的类: Class entityClass = TUtils.getTClass(this.getClass());public cl
第一步:
定义接口:
public interface ICommonDao
List
}
第二步:
实现接口的类:
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 ListfindCollectionByConditionNoPage(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 ListfindCollectionByConditionNoPage(ElecText elecText) { //查询条件 String condition = ""; List
第五步:
/**模拟Action,调用Service,指定查询条件查询对应的结果,返回List*/
@Test
public void findCollectionByConditionNoPage(){
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
IElecTextService elecTextService = (IElecTextService) ac.getBean(IElecTextService.SERVICE_NAME);
ElecText elecText = new ElecText();
// elecText.setTextName("张");
// elecText.setTextRemark("张");
List list = elecTextService.findCollectionByConditionNoPage(elecText);
if(list!=null && list.size()>0){
for(ElecText elecText2:list){
System.out.println(elecText2.getTextName()+" "+elecText2.getTextDate()+" "+elecText2.getTextRemark());
}
}
}
真正的action:
package com.itheima.elec.web.action;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.itheima.elec.domain.ElecSystemDDL;
import com.itheima.elec.service.IElecSystemDDLService;
@SuppressWarnings("serial")
@Controller("elecSystemDDLAction")
@Scope(value="prototype")
public class ElecSystemDDLAction extends BaseAction{
ElecSystemDDL elecSystemDDL = this.getModel();
@Resource(name=IElecSystemDDLService.SERVICE_NAME)
private IElecSystemDDLService elecSystemDDLService;
public String home(){
List list = elecSystemDDLService.findKeywordWithDistinct();
request.setAttribute("list", list);
return "home";
}
public String edit(){
//获取数据类型
String keyword = elecSystemDDL.getKeyword();
//1:使用数据类型作为查询条件,查询数据字典表,返回List
List list = elecSystemDDLService.findSystemDDLListByKeyword(keyword);
request.setAttribute("systemList", list);
return "edit";
}
}
