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
- Hibernate(8)Stucts+Hibernate+接口编程
- Hibernate的编程接口
- Hibernate基本知识(二)--Hibernate核心接口
- Hibernate(三):Hibernate核心类,接口
- Hibernate核心接口(转)
- Hibernate(2)Hibernate核心类和接口
- hibernate主要接口和类(笔记)
- Hibernate-- (二)核心类和接口
- hibernate 原理(ORM)及接口
- Hibernate自我总结(Configuration接口)
- hibernate 的lifecycle接口
- Hibernate api 主要接口
- Hibernate核心接口简介
- hibernate核心接口
- Hibernate核心接口 (4.1)
- Hibernate的核心接口
- Hibernate核心接口
- hibernate核心接口
- shell之文本过滤(awk)
- 高德已知圆心,半径,计算圆弧坐标
- 使用GCD 信号量来实现iOS 同步网络请求
- [(机器学习)概率统计]极大似然估计MLE原理+python实现
- 08 const
- Hibernate(8)Stucts+Hibernate+接口编程
- Android 使用 TraceView 分析卡顿问题
- Android Studio调试打包签名设置
- POJ 3254 (基础 状态压缩 DP )
- 前后端分离设计
- Python爬虫网页图片
- Linux下打包压缩war和解压war包
- Android两个EditText互相监听
- SIM逻辑模型与APDU