Hibernate(8)Stucts+Hibernate+接口编程

来源:互联网 发布:微商跟淘宝哪个好 编辑:程序博客网 时间:2024/06/05 14:27

1 项目框架图

这里写图片描述
框架补充:
这里写图片描述
业务层开发者,应该使用Junit测试开发结果

2 通过接口调用

①接口类

// BaseInterfacepublic interface BaseInterface {    // 通过id号,来获取一个对象实例(Serializable:使用它比int等好,因为所有的包装类都实现了该接口)    public Object findById(Class clazz, java.io.Serializable id);}// UserServiceInter public interface UserServiceInter extends BaseInterface {    // 验证    public Users checkUser(Users user) ;}

②Service类

// BaseService public abstract class BaseService implements BaseInterface {    public Object findById(Class clazz, Serializable id) {        // 调用工具类中的方法        return HibernateUtil.findById(clazz, id);    }}// UsersService public class UsersService extends BaseService implements UserServiceInter {    // 验证    public Users checkUser(Users user) {        String hql = "from Users where userid=? and userpwd=?";        String paras[] = {user.getUserid()+"", MyTools.MD5(user.getUserpwd())};        List<Users> list = HibernateUtil.executeQuery(hql, paras);        if(list.size()==0) {            return null;        } else {            return list.get(0);        }    }}

③Action中接口的使用

public class LoginAction extends DispatchAction {    public ActionForward login(ActionMapping mapping, ActionForm form,            HttpServletRequest request, HttpServletResponse response) {        UserForm userForm = (UserForm) form;//      UsersService userService = new UsersService(); // 直接使用对象,有一定的耦合性        // 通过接口调用        UserServiceInter userServiceInter = new UsersService();        Users user = new Users();        user.setUserid(Integer.parseInt(userForm.getUserid()));        user.setUserpwd(userForm.getUserpwd());        user = userServiceInter.checkUser(user);        if(user!=null) {            request.getSession().setAttribute("userinfo", user);            return mapping.findForward("loginok");        } else {            return mapping.findForward("goLoginUi");        }    }}

3 Hibernate工具类+showObjectsById

public final class HibernateUtil {    private static SessionFactory sessionFactory = null;    // 线程局部模式    private static ThreadLocal<Session> threadLoacal = new ThreadLocal<Session>();    private HibernateUtil() {}    static {        sessionFactory = new Configuration().configure().buildSessionFactory();    }    // 获取全新的session    public static Session openSession() {        return sessionFactory.openSession();    }    // 获取和线程关联的session    public static Session getCurrentSession() {        Session session = threadLoacal.get();        // 判断是否得到        if(session==null) {            session = sessionFactory.openSession();            // 将session放入threadLocal            threadLoacal.set(session);        }        return session;    }    // 根据id返回对象的方法    public static Object findById(Class clazz, java.io.Serializable id) {        Session session = null;        Transaction ts = null;        Object obj = null;        try {            session = openSession();            ts = session.beginTransaction();            obj = session.load(clazz, id);            ts.commit();        } catch (Exception e) {            if(ts!=null) {                ts.rollback();            }            e.printStackTrace();            throw new RuntimeException(e.getMessage());        } finally {            if(session!=null && session.isOpen()) {                session.close();            }        }        return obj;    }    /// 分页    public static List executeQueryByPage(String hql, String[] paras, int pageSize, int pageNow) {        Session session = null;        List list = null;        try {            session = openSession();            Query query = session.createQuery(hql);            if(paras!=null && paras.length>0) {                for(int i=0; i<paras.length; i++) {                    query.setString(i, paras[i]);                }            }            ///             query.setFirstResult((pageNow-1)*pageSize).setMaxResults(pageSize);            list = query.list();        } catch (Exception e) {            e.printStackTrace();            throw new RuntimeException(e.getMessage());        } finally {            if(session!=null && session.isOpen()) {                session.close();            }        }        return list;    }    /// 查询接口    public static List executeQuery(String hql, String[] paras) {        Session session = null;        List list = null;        try {            session = openSession();            Query query = session.createQuery(hql);            if(paras!=null && paras.length>0) {                for(int i=0; i<paras.length; i++) {                    query.setString(i, paras[i]);                }            }            list = query.list();        } catch (Exception e) {            e.printStackTrace();            throw new RuntimeException(e.getMessage());        } finally {            if(session!=null && session.isOpen()) {                session.close();            }        }        return list;    }    /// 修改和删除 批量sql    public static void executeUpdate(String hql, String[] paras) {        Session session = null;        Transaction ts = null;        try {            session = openSession();            ts = session.beginTransaction();            Query query = session.createQuery(hql);            if(paras!=null && paras.length>0) {                for(int i=0; i<paras.length; i++) {                    query.setString(i, paras[i]);                }            }            query.executeUpdate();            ts.commit();        } catch (Exception e) {            if(ts!=null) {                ts.rollback();            }            e.printStackTrace();            throw new RuntimeException(e.getMessage());        } finally {            if(session!=null && session.isOpen()) {                session.close();            }        }    }    // 添加    public static void save(Object obj) {        Session session = null;        Transaction ts = null;        try {            session = openSession();            ts = session.beginTransaction();            session.save(obj);            ts.commit();        } catch (Exception e) {            if(ts!=null) {                ts.rollback();            }            e.printStackTrace();            throw new RuntimeException(e.getMessage());        } finally {            if(session!=null && session.isOpen()) {                session.close();            }        }    }}
0 0