`
jiayj198609
  • 浏览: 150077 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Struts2、Hibernate、Spring整合的泛型DAO,以及通用的分页技术 二

阅读更多
3.具体的DAO接口


view plaincopy to clipboardprint?

package abu.csdn.dao;   
import abu.csdn.bean.User;   
/**
*
* @author Abu
*
*/  
public interface UserDao extends GenericDao<User, Long> {   
    /**
      * <p>
      * 根据用户名精确查找
      * </p>
      * @param uname : 用户名
      * @return : 匹配的实体
      */  
    public User findByNameExact(String uname);   
}  
package abu.csdn.dao; import abu.csdn.bean.User; /** * * @author Abu * */ public interface UserDao extends GenericDao<User, Long> { /** * <p> * 根据用户名精确查找 * </p> * @param uname : 用户名 * @return : 匹配的实体 */ public User findByNameExact(String uname); }

4.具体DAO接口的实现


view plaincopy to clipboardprint?
package abu.csdn.dao.impl;   
import java.util.List;   
import abu.csdn.bean.User;   
import abu.csdn.dao.UserDao;   
/**
*
* @author Abu
*
*/  
public class UserDaoImpl extends GenericDaoImpl<User, Long> implements UserDao {   
    public UserDaoImpl(Class<User> type) {   
        super(type);   
     }   
    @SuppressWarnings("unchecked")   
    public User findByNameExact(String uname) {   
         List<User> list = (List<User>) this.getHibernateTemplate().find(   
                "from User u where u.uname = ?", uname).get(0);   
        return (!list.isEmpty() && list.size() == 1) ? null : list.get(0);          
     }   
}  
package abu.csdn.dao.impl; import java.util.List; import abu.csdn.bean.User; import abu.csdn.dao.UserDao; /** * * @author Abu * */ public class UserDaoImpl extends GenericDaoImpl<User, Long> implements UserDao { public UserDaoImpl(Class<User> type) { super(type); } @SuppressWarnings("unchecked") public User findByNameExact(String uname) { List<User> list = (List<User>) this.getHibernateTemplate().find( "from User u where u.uname = ?", uname).get(0); return (!list.isEmpty() && list.size() == 1) ? null : list.get(0); } }

5.基本泛型服务接口


view plaincopy to clipboardprint?
package abu.csdn.service;   
import java.io.Serializable;   
import java.util.Collection;   
import java.util.List;   
/**
* <p>
* 基本上与泛型DAO的通用接口一致,请参见GenericDao
* <p>
*
* @author Abu
*
* @param <T> :
*             持久化的实体Bean
* @param <ID> :
*             实体Bean的id
*/  
public interface GenericService<T, ID extends Serializable> {   
    /**
      * 保存实体
      *
      * @param entity :
      *             实体
      * @return 保存后得到的id
      */  
    public ID save(T entity);   
    /**
      * <p>
      * 删除实体
      * </p>
      *
      * @param entity :
      *             实体
      */  
    public void remove(T entity);   
       
       
    /**
      * <p>
      * 删除实体集合
      * </p>
      *
      * @param entities :
      *             实体
      */  
    public void removeAll(Collection<T> entities);   
    /**
      * <p>
      * 修改实体
      * </p>
      *
      * @param entity :
      *             实体
      */  
    public void modify(T entity);   
    /**
      * <p>
      * 通过名字查找
      * </p>
      *
      * @param id :
      *             id
      * @return 找到的实体
      */  
    public T findById(ID id);   
    /**
      * <p>
      * 查找全部实体
      * <p>
      *
      * @return 所有实体的列表
      */  
    public List<T> findAll();   
    /**
      * <p>
      * 根据给定的hql语句进行分页查找
      * <p>
      *
      * @param page :
      *             要查询的页码
      * @param size :
      *             每页记录条数
      * @return 匹配的实体列表
      */  
    public List<T> findByPage(final int page, final int size);   
    /**
      * <p>
      * 计算匹配查询条件的记录总数,如果没有注入或者设置hql语句,将使用默认的查询语句返回数据库中所有记录
      * </p>
      *
      * @return 记录总数
      */  
    public int getTotalRows();   
    /**
      * <p>
      * 根据每页记录的数量,计算出总的分页数
      * </p>
      *
      * @param size
      *             每页记录的数量
      * @return 分页总数
      */  
    public int getPageSize(int size);   
}  


6.基本泛型服务接口的实现


view plaincopy to clipboardprint?
package abu.csdn.service.impl;   
import java.io.Serializable;   
import java.util.Collection;   
import java.util.List;   
import abu.csdn.dao.GenericDao;   
import abu.csdn.service.GenericService;   
/**
*
* @author Abu
*
* @param <T>
* @param <ID>
*/  
public class GenericServiceImpl<T, ID extends Serializable> implements  
         GenericService<T, ID> {   
    private GenericDao<T,ID> genericDao;   
       
    public List<T> findAll() {           
        return genericDao.findAll();   
     }   
    public T findById(ID id) {         
        return genericDao.findById(id);   
     }   
    public List<T> findByPage(int page, int size) {          
        return genericDao.findByPage(page, size);   
     }   
    public int getPageSize(int size) {         
        return genericDao.getPageSize(size);   
     }   
    public int getTotalRows() {        
        return genericDao.getTotalRows();   
     }   
    public void modify(T entity) {   
         genericDao.modify(entity);         
     }   
    public void remove(T entity) {   
         genericDao.remove(entity);   
     }   
    public void removeAll(Collection<T> entities) {   
         genericDao.removeAll(entities);        
     }   
       
    public ID save(T entity) {         
        return genericDao.save(entity);   
     }   
    public void setGenericDao(GenericDao<T, ID> genericDao) {   
        this.genericDao = genericDao;   
     }      
}  
package abu.csdn.service.impl; import java.io.Serializable; import java.util.Collection; import java.util.List; import abu.csdn.dao.GenericDao; import abu.csdn.service.GenericService; /** * * @author Abu * * @param <T> * @param <ID> */ public class GenericServiceImpl<T, ID extends Serializable> implements GenericService<T, ID> { private GenericDao<T,ID> genericDao; public List<T> findAll() { return genericDao.findAll(); } public T findById(ID id) { return genericDao.findById(id); } public List<T> findByPage(int page, int size) { return genericDao.findByPage(page, size); } public int getPageSize(int size) { return genericDao.getPageSize(size); } public int getTotalRows() { return genericDao.getTotalRows(); } public void modify(T entity) { genericDao.modify(entity); } public void remove(T entity) { genericDao.remove(entity); } public void removeAll(Collection<T> entities) { genericDao.removeAll(entities); } public ID save(T entity) { return genericDao.save(entity); } public void setGenericDao(GenericDao<T, ID> genericDao) { this.genericDao = genericDao; } }

7.具体的服务接口


view plaincopy to clipboardprint?
package abu.csdn.service;   
import abu.csdn.bean.User;   
/**
*
* @author Abu
*
*/  
public interface UserService extends GenericService<User, Long> {   
    /**
      * <p>
      * 用户登录验证, 登录成功将返回该用户实体,失败则为空
      * </p>
      *
      * @param uname :
      *             用户名
      * @param upass :
      *             密码
      * @return 用户实体
      */  
    public User login(String uname, String upass);   
       
    public void removeByUids(long [] uids);   
}  
package abu.csdn.service; import abu.csdn.bean.User; /** * * @author Abu * */ public interface UserService extends GenericService<User, Long> { /** * <p> * 用户登录验证, 登录成功将返回该用户实体,失败则为空 * </p> * * @param uname : * 用户名 * @param upass : * 密码 * @return 用户实体 */ public User login(String uname, String upass); public void removeByUids(long [] uids); }

8.具体的服务接口的实现


view plaincopy to clipboardprint?
package abu.csdn.service.impl;   
import java.util.Collection;   
import java.util.List;   
import abu.csdn.bean.User;   
import abu.csdn.dao.UserDao;   
import abu.csdn.dao.impl.UserDaoImpl;   
import abu.csdn.service.UserService;   
/**
*
* @author Abu
*
*/  
public class UserServiceImpl implements UserService {   
    private UserDao userDao;   
    public void setUserDao(UserDao userDao) {   
        this.userDao = userDao;   
     }   
    public UserDao getUserDao() {   
        return this.userDao;   
     }   
    public List<User> findAll() {   
        return userDao.findAll();   
     }   
    public User findById(Long id) {   
        return userDao.findById(id);   
     }   
    public List<User> findByPage(int page, int size) {   
        return userDao.findByPage(page, size);   
     }   
    public int getPageSize(int size) {   
        return userDao.getPageSize(size);   
     }   
    public int getTotalRows() {   
        return userDao.getTotalRows();   
     }   
    public void modify(User entity) {   
         userDao.modify(entity);   
     }   
    public void removeAll(Collection<User> entities) {   
         userDao.removeAll(entities);   
     }   
    public void remove(User entity) {   
         userDao.remove(entity);   
     }   
    public Long save(User entity) {   
        return userDao.save(entity);   
     }   
    @SuppressWarnings("unchecked")   
    public User login(String uname, String upass) {   
         String hql = "from User u where u.uname = '" + uname + "'"  
                 + " and u.upass = '" + upass + "'";   
         userDao.setHql(hql);   
         List<User> list = userDao.findAll();   
         User user =   (list.isEmpty() && list.size() != 1) ? null : list.get(0);   
        // 千万要记住,一旦修改了默认值,则业务结束后要重新改回默认值   
         userDao.setHql(" from " + User.class.getName());   
           
        return   user;   
     }   
    public void removeByUids(long[] uids) {   
         StringBuffer hqlSb = new StringBuffer();   
         hqlSb.append(" from User u where u.uid in (");   
        for (int i = 0; i < uids.length; i++) {   
            if (i != uids.length - 1) {   
                 hqlSb.append(uids[i]).append(",");   
             } else {   
                 hqlSb.append(uids[i]);   
             }   
         }   
         hqlSb.append(")");   
         userDao.setHql(hqlSb.toString());   
         Collection<User> entities = userDao.findAll();   
        if (entities != null) {   
             userDao.removeAll(entities);   
         }   
     }   
}  
package abu.csdn.service.impl; import java.util.Collection; import java.util.List; import abu.csdn.bean.User; import abu.csdn.dao.UserDao; import abu.csdn.dao.impl.UserDaoImpl; import abu.csdn.service.UserService; /** * * @author Abu * */ public class UserServiceImpl implements UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public UserDao getUserDao() { return this.userDao; } public List<User> findAll() { return userDao.findAll(); } public User findById(Long id) { return userDao.findById(id); } public List<User> findByPage(int page, int size) { return userDao.findByPage(page, size); } public int getPageSize(int size) { return userDao.getPageSize(size); } public int getTotalRows() { return userDao.getTotalRows(); } public void modify(User entity) { userDao.modify(entity); } public void removeAll(Collection<User> entities) { userDao.removeAll(entities); } public void remove(User entity) { userDao.remove(entity); } public Long save(User entity) { return userDao.save(entity); } @SuppressWarnings("unchecked") public User login(String uname, String upass) { String hql = "from User u where u.uname = '" + uname + "'" + " and u.upass = '" + upass + "'"; userDao.setHql(hql); List<User> list = userDao.findAll(); User user = (list.isEmpty() && list.size() != 1) ? null : list.get(0); // 千万要记住,一旦修改了默认值,则业务结束后要重新改回默认值 userDao.setHql(" from " + User.class.getName()); return user; } public void removeByUids(long[] uids) { StringBuffer hqlSb = new StringBuffer(); hqlSb.append(" from User u where u.uid in ("); for (int i = 0; i < uids.length; i++) { if (i != uids.length - 1) { hqlSb.append(uids[i]).append(","); } else { hqlSb.append(uids[i]); } } hqlSb.append(")"); userDao.setHql(hqlSb.toString()); Collection<User> entities = userDao.findAll(); if (entities != null) { userDao.removeAll(entities); } } }

分享到:
评论

相关推荐

    Struts2 Spring3 Hibernate 注解功能 DAO 泛型 通用分页

    总的来说,"SSHWithAnnotationDemo"项目展示了如何利用现代Java技术栈的高级特性,包括Struts2、Spring3和Hibernate的注解功能,DAO层的泛型设计以及通用的分页实现,来构建一个高效、可维护的Web应用。这样的实践...

    ssh整合下的通用泛型DAO+分页

    在这个特定的讨论中,我们聚焦于SSH1中的一个关键概念:通用泛型DAO(Data Access Object)以及分页功能的实现。DAO层是模型层和数据访问层之间的桥梁,它的主要职责是处理数据库操作,为业务层提供无状态的数据访问...

    SSH 泛型DAO分页

    这个压缩包文件的标题"SSH 泛型DAO分页"表明它提供了一个实现SSH框架整合的示例,特别关注了泛型DAO(Data Access Object)以及分页功能。下面将详细介绍SSH框架及其分页和泛型DAO的概念。 1. **Struts2**: Struts2...

    ssh通用泛型DAO

    在Java开发领域,SSH(Struts2、Spring、Hibernate)是一个经典的MVC框架组合,用于构建企业级Web应用。SSH中的DAO(Data Access Object)层是数据访问层,负责与数据库进行交互。在这个主题中,我们将深入探讨"ssh...

    struts+spring+hibernate通用分页方法

    在文档"struts+spring+hibernate通用分页方法.doc"中,可能会详细阐述如何配置这些框架的整合,如何编写Action、Service、DAO以及视图层的代码,以及如何测试和优化分页性能,例如缓存策略、预加载等。 这个通用...

    SSH泛型DAO+Proxool+DisPlayTag+Jquery easyui

    标题中的"SSH泛型DAO+Proxool+DisPlayTag+Jquery easyui"涉及到的是一个基于Spring、Struts和Hibernate(SSH)框架的Web应用开发中的几个关键技术和组件。让我们逐一深入探讨这些技术。 1. **Spring**: Spring 是...

    使用配置文件对DAO层封装具有分页功能的S2SH整合实例_好资源0分送

    本文档旨在详细介绍如何使用配置文件的方式完成DAO层的封装,并在此基础上实现分页功能,最终达成S2SH(Struts、Spring、Hibernate)的整合。此文档作为对《使用Annotation并对DAO层封装具有分页功能的S2SH整合实例...

    JavaEE8500offer模板包含详细说明和定义

    1. **福建羽晨服饰绩效管理二次开发** - 使用了J2EE技术框架,包括Struts2、Spring、Hibernate和WebLogic。Struts2作为控制层,Spring处理业务逻辑,Hibernate负责数据持久化,WebLogic作为中间件。此外,还运用了...

    java开发程序员简历

    * 使用 Hibernate 实现持久化层,使用泛型 DAO 封装添/删/改/查/分页/统计这些操作 * 实现细粒度权限管理使用 Struts2 中提供的拦截器实现对 Action 方法的拦截 * 粗粒度权限管理使用 Filter 实现 * 使用 Java、...

    JSP,SSH框架学习日志3,DAO层.pdf

    在Java Web开发中,SSH(Struts2、Spring、Hibernate)框架被广泛使用,而DAO(Data Access Object)层是SSH架构中的一个重要组成部分,主要负责与数据库进行交互。本篇日志将探讨如何在SSH框架下高效地实现DAO层,...

    如何对多对多关系获得的set集合中的记录进行分页

    在Java Web开发中,SSH(Struts2、Spring、Hibernate)框架被广泛使用,其中的分页功能是提高用户体验的重要一环。对于处理多对多关系的数据,分页显得更为复杂,因为涉及到的对象关联和集合的处理。本篇将详细阐述...

    ssh数据库基本操作封装

    这通常涉及到Spring的IoC(Inversion of Control)容器来管理数据库连接和事务,Hibernate作为ORM(Object-Relational Mapping)工具处理数据对象与数据库表之间的映射,以及Struts作为MVC(Model-View-Controller)...

    java程序员面试简历&#40;列子&#41;.doc.doc

    - DaoSupport用于通用的DAO操作,封装分页功能,并使用自定义泛型。 - 文件上传下载通过IO和特定库如JSPSmartUpload、Spring的POI实现。 这份简历展示了应聘者扎实的Java Web开发基础,丰富的框架使用经验以及...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

Global site tag (gtag.js) - Google Analytics