zoukankan      html  css  js  c++  java
  • Spring + Struts + Hibernate 简单封装通用接口

    1、BaseDao

    public interface BaseDao<T> {
        /**
         * 获取符合条件的记录数
         * @param filter
         * @param sortName
         * @param sortOrder
         * @return int
         */
        public int findCount(String filter, String sortName, String sortOrder);
        
        /**
         * 获取分页数据
         * @param filter
         * @param sortName
         * @param sortOrder
         * @param startSize
         * @param pageSize
         * @return List<T>
         */
        public List<T> findGrid(String filter, String sortName, String sortOrder, int startSize, int pageSize);
        
        /**
         * 添加实体类对象
         * @param entity
         * @return int
         */
        public int add(T entity);
        
        /**
         * 根据主键获取实体类对象
         * @param id
         * @return T
         */
        public T getById(int id);
        
        /**
         * 更新实体类对象
         * @param entity
         * @return boolean
         */
        public boolean update(T entity);
        
        /**
         * 删除实体类对象
         * @param id
         * @return boolean
         */
        public boolean delete(int id);
        
    }

    2、BaseDaoImpl

    public  class BaseDaoImpl<T> implements BaseDao<T>{
        
        private Class<T> clazz = null;// 表示当前的类型
        
        private SessionFactory sessionFactory;
        /**
         * 通过反射技术获得子类T的真实值
         * 由于在子类中首先调用的是父类的构造方法
         */
        @SuppressWarnings("unchecked")
        public BaseDaoImpl(){  
            // 获取当前new的对象的泛型的父类类型
             ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
            // 获取第一个类型参数的真实类型
            clazz = (Class<T>) pt.getActualTypeArguments()[0]; 
        }  
        
        public Session getSession() {
            return sessionFactory.openSession();
        }
    
        public void setSessionFactory(SessionFactory sessionFactory) {
            this.sessionFactory = sessionFactory;
        }
    
        @Override
        public int findCount(String filter, String sortName, String sortOrder) {
            Session session=getSession();    
            StringBuffer hql=new StringBuffer("");
            hql.append("from ").append(clazz.getSimpleName()).append(" where ").append(filter).append(" order by ").append(sortName).append(" ").append(sortOrder);       
            int num=0;
            try{    
                Query query = session.createQuery(hql.toString());
                List<T> list=query.list();
                num=list.size();
            }catch(Exception ex){
                ex.printStackTrace();    
            }finally{
                session.close();
            }
            return num;
        }
    
        @Override
        public List<T> findGrid(String filter, String sortName, String sortOrder, int startSize, int pageSize) {
            Session session=getSession();    
            List<T> list=null;
            StringBuffer hql=new StringBuffer("");
            hql.append("from ").append(clazz.getSimpleName()).append(" where ").append(filter).append(" order by ").append(sortName).append(" ").append(sortOrder);       
            try{
                Query query =session.createQuery(hql.toString());
                query.setFirstResult(startSize); //设置这一页显示的第一条记录的索引
                query.setMaxResults(pageSize); //这一页显示的记录个数
                list=query.list();
            }catch(Exception ex){
                ex.printStackTrace();
            }finally{
                session.close();
            }
            return list;
        }
        
        @Override
        public int add(T entity) {
            int num=0; //标识注册是否成功
            Session session=getSession();
            try{
                Transaction trans=session.beginTransaction();
                num=Integer.parseInt(session.save(entity).toString());//在缓存中保存数据,受影响行数
                trans.commit();//写入数据库表
            }catch (Exception e) {
                e.printStackTrace();
            }finally{
                session.close();
            }
            return num;
        }
    
        @Override
        public T getById(int id) {
            T entity=null;
            Session session=getSession();
            try{
                entity=(T)session.get(clazz,id);        
            }catch(Exception ex){
                ex.printStackTrace();
            }finally{
                session.close();
            }
            return entity;    
        }
    
        @Override
        public boolean update(T entity) {
            boolean flag=false;
            Session session = getSession();
            try{
                Transaction trans=session.beginTransaction();
                session.update(entity);
                trans.commit();    
                flag=true;
            }catch(Exception ex){
                ex.printStackTrace();
            }finally{
                session.close();
            }
            return flag;
        }
    
        @Override
        public boolean delete(int id) {
            boolean flag=false;
            Session session=getSession();
            try{        
                T entity=(T)session.get(clazz,id);
                Transaction trans=session.beginTransaction();
                session.delete(entity);
                trans.commit();
                flag=true;
            }catch(Exception ex){
                ex.printStackTrace();
            }finally{
                session.close();
            }
            return flag;
        }
    
    }

    3、BaseService

    public interface BaseService<T> {
    
        public Map<String,Object> findGrid(String filter, String sortName, String sortOrder, int startSize, int pageSize);
        
        public int add(T entity);
        
        public T getById(int id);
        
        public boolean update(T entity);
        
        public boolean delete(int id);
            
    }

    4、BaseServiceImpl

    public class BaseServiceImpl<T> implements BaseService<T> {
    
        private BaseDao baseDao;
        
        public BaseDao getBaseDao() {
            return baseDao;
        }
        public void setBaseDao(BaseDao baseDao) {
            this.baseDao = baseDao;
        }
    
        @Override
        public Map<String, Object> findGrid(String filter, String sortName, String sortOrder, int startSize, int pageSize) {
            // TODO Auto-generated method stub
            Map<String,Object> result = new HashMap<String,Object>();
            int total=baseDao.findCount( filter, sortName, sortOrder);
            List<T> rows=baseDao.findGrid(filter, sortName, sortOrder, startSize, pageSize);
            result.put("total",total);
            result.put("rows",rows);
            return result;
        }
    
        @Override
        public int add(T entity) {
            // TODO Auto-generated method stub
            return baseDao.add(entity);
        }
    
        @Override
        public T getById(int id) {
            // TODO Auto-generated method stub
            return (T) baseDao.getById(id);
        }
        
        @Override
        public boolean update(T entity) {
            // TODO Auto-generated method stub
            return baseDao.update(entity);
        }
        
        @Override
        public boolean delete(int id) {
            // TODO Auto-generated method stub
            return baseDao.delete(id);
        }
    }

    5、BaseAction

    public class BaseAction<T> extends ActionSupport{
        // 取得request对象
        protected HttpServletRequest request = null;
        // 取得response对象
        protected HttpServletResponse response = null;
        //service类对象
        protected BaseService baseService;
        //实体类对象
        protected T entity;
        //主键
        protected int id;
        //主键字符串ids
        protected String ids;
        //每页的记录数
        protected int pageSize;    
        //第几页
        protected int pageNumber;    
        //排序字段
        protected String sortName;    
        //排序方式
        protected String sortOrder;    
        //返回结果
        protected Result result=new Result(false, "操作失败");
        //过滤条件
        protected String filter=null;
        //查询字段
        //protected String fieldlist = null;
        
        public BaseService getBaseService() {
            return baseService;
        }
        public void setBaseService(BaseService baseService) {
            this.baseService = baseService;
        }
        public T getEntity() {
            return entity;
        }
        public void setEntity(T entity) {
            this.entity = entity;
        }    
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getIds() {
            return ids;
        }
        public void setIds(String ids) {
            this.ids = ids;
        }
        public int getPageSize() {
            return pageSize;
        }
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
        public int getPageNumber() {
            return pageNumber;
        }
        public void setPageNumber(int pageNumber) {
            this.pageNumber = pageNumber;
        }
        public String getSortName() {
            return sortName;
        }
        public void setSortName(String sortName) {
            this.sortName = sortName;
        }
        public String getSortOrder() {
            return sortOrder;
        }
        public void setSortOrder(String sortOrder) {
            this.sortOrder = sortOrder;
        }    
        
        protected void grid(){
            int startSize=(pageNumber-1) * pageSize;    
            toAjax(baseService.findGrid(filter, sortName, sortOrder, startSize, pageSize));
        }
    
        protected void save(){
            if(id!=0){
                boolean flag=baseService.update(entity);
                if(flag){  
                    result.setFlag(true);
                    result.setMsg("操作成功");
                }    
            }else{
                int i=baseService.add(entity);
                if(i > 0){
                    result.setFlag(true);
                    result.setMsg("操作成功");
                }
            }
            toAjax(result);
        }
        
        protected void getById() {
            toAjax(baseService.getById(id));
        }
        
        protected void delete(){
            String[] array = ids.split(",");  
            boolean flag=false;
            for(String id : array){
                flag=baseService.delete(Integer.parseInt(id));                            
            }
            if(flag){  
                result.setFlag(true);
                result.setMsg("操作成功");
            }
            toAjax(result);
        }
    
        
        /**
         * 转换成ajax可以接收的数据
         * @param data
         */
        protected void toAjax(Object data) {
            Gson gson= new Gson();
            final String json= gson.toJson(data);
            System.out.println("打印数据:"+json);
            try {
                response = ServletActionContext.getResponse();
                response.setContentType("text/html;charset=UTF-8");
                response.setHeader("cache-control", "no-cache");
                response.setCharacterEncoding("UTF-8");
                response.flushBuffer();
                response.getWriter().write(json);
                response.getWriter().flush();  
                response.getWriter().close();    
            } catch (IOException e) {
                e.printStackTrace();
            }
            
        }
    }

     这是小编的原创随笔,请尊重原创,若是转载请注明出处,谢谢。

  • 相关阅读:
    font-family常见字体
    MongoDB numa系列问题三:overcommit_memory和zone_reclaim_mode
    MongoDB numa系列问题二:WARNING: You are running on a NUMA machine.
    MongoDB numa系列问题一:[initandlisten] connection refused because too many open connections:
    MongoDB高可用架构:Replica Sets+Sharding
    MongoDB分片配置系列一:
    MongoDB副本集配置系列一:安装MongoDB
    MongoDB副本集配置系列二:配置MongoDB副本集
    Mongostat 2.6详解
    【MongoDB:】稍微复杂的操作
  • 原文地址:https://www.cnblogs.com/liuzhenping/p/8087648.html
Copyright © 2011-2022 走看看