ssh之雇员管理系统(9)-编码优化

一、代码优化

  1. 我们将那些接口和实现接口的逻辑,去建立一个基础的接口和逻辑实现,让这些接口和实现去继承这些接口
  2. 那这个接口要怎样建立呢?这个实现的类要怎样建立呢?

这个包下面的基础接口和基础类。

我们建立这个接口BasicServiceInter.java

package com.wang.basic;

import java.util.List;


public interface BasicServiceInter {

    //生命常用的方法
    //1.通过id获取对象
    public Object findById(Class clazz,java.io.Serializable id);
    
    //2.统一的查询方法
    public List executeQuery(String hql, Object []parameters);
    
    //3.查询分页
    public List executeQueryByPage(String hql, Object []parameters,Integer pageNow,Integer pageSize);
    
    //4.添加一个对象
    public void add(Object obj);
    
    //5.如果以后需要,hql->删除,修改
    public List executeUpdate(String hql, Object []parameters);
}
View Code

建立这个类去实现这个接口BasicService.java

package com.wang.basic;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.SessionFactory;

public class BasicService implements BasicServiceInter {

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    /**
     * add增加对象,save(object)
     */
    public void add(Object obj) {
        this.sessionFactory.getCurrentSession().save(obj);
    }

    /**
     * 查询
     */
    public List executeQuery(String hql, Object[] parameters) {
        Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
        if (parameters != null && parameters.length > 0) {
            for (int i = 0; i < parameters.length; i++) {
                query.setParameter(i, parameters[i]);
            }
        }
        return query.list();
    }

    /**
     * 分页
     */
    public List executeQueryByPage(String hql, Object[] parameters,
            Integer pageNow, Integer pageSize) {
        Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
        if (parameters != null && parameters.length > 0) {
            for (int i = 0; i < parameters.length; i++) {
                query.setParameter(i, parameters[i]);
            }
        }
        return query.setFirstResult((pageNow-1)*pageSize).setMaxResults(pageSize).list();
    }

    public List executeUpdate(String hql, Object[] parameters) {
        // TODO Auto-generated method stub
        return null;
    }

    /**
     * 根据id得到对象
     */
    public Object findById(Class clazz, Serializable id) {
        return this.sessionFactory.getCurrentSession().get(clazz, id);
    }



}
View Code

这里用到Query在这个包下面org.hibernate.Query

让那些接口去继承这个接口,让那些类去继承那个类,这样我们就可以看成是在调用那个最基础的类,也就是最公用的类。

posted @ 2013-05-15 16:14  Tim&Blog  阅读(209)  评论(0编辑  收藏  举报