`
jieAmei
  • 浏览: 31240 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

daoimpl

 
阅读更多
package com.launch.yqyc.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer;
import org.springframework.stereotype.Repository;

import com.launch.core.dao.impl.BaseDaoImpl;
import com.launch.core.util.PagingHelper;
import com.launch.yqyc.Constants;
import com.launch.yqyc.dao.SysUserDao;
import com.launch.yqyc.model.SysUser;

/**
* <p>
* SysUserDaoImpl
* </p>
* <p>
* 实现系统用户的CRUD操作的DAO接口方法
* </p>
* @author zhanghongbo
* @since 1.0
* @version $Id: SysUserDaoImpl.java 2012-7-20 17:51:22 $
*/
@Repository("sysUserDao")
public class SysUserDaoImpl extends BaseDaoImpl<SysUser, String> implements SysUserDao
{
    @Autowired
    private OracleSequenceMaxValueIncrementer seqVideoSystemIdGenerator;

    /**
     * 默认构造器
     */
    public SysUserDaoImpl()
    {
    }

    /**
     * 根据用户名、用户类型分页查询匹配的用户列表
     * @param page 分页对象
     * @param sysUser 用户对象
     * @return
     */
    public PagingHelper findPage(PagingHelper page, SysUser sysUser)
    {
        Criterion criterion = null;
        List<Criterion> criterionList = new ArrayList<Criterion>();
        if (sysUser != null)
        {
            // 模糊匹配序列号
            if(StringUtils.isNotBlank(sysUser.getSerialNo())){
                criterion = Restrictions.like("serialNo", StringUtils.trim(sysUser.getSerialNo()), MatchMode.ANYWHERE);
                criterionList.add(criterion);
            }
            // 模糊匹配用户名
            if (StringUtils.isNotBlank(sysUser.getUserName()))
            {
                criterion = Restrictions.like("userName", StringUtils.trim(sysUser.getUserName()), MatchMode.ANYWHERE);
                criterionList.add(criterion);
            }
            // 用户类型
            if (sysUser.getUserType() != null)
            {
                if (sysUser.getUserType() == Constants.USER_TYPE_COMMON)
                {
                    criterion = Restrictions.le("userType", Constants.USER_TYPE_EXPERT); // 普通用户列表
                }
                else
                {
                    criterion = Restrictions.eq("userType", sysUser.getUserType());
                }
                criterionList.add(criterion);
            }
            // 精确匹配用户状态
            if (sysUser.getStatus() != null)
            {
                criterion = Restrictions.eq("status", sysUser.getStatus());
                criterionList.add(criterion);
            }
        }

        Criterion[] criterions = criterionList.toArray(new Criterion[criterionList.size()]);
        page = findPage(page, criterions);
        return page;
    }

    /**
     * 获取用户列表
     * @param sysUser 用户对象
     * @return
     */
    @SuppressWarnings("unchecked")
    @Override
    public List<SysUser> findSysUserList(SysUser sysUser)
    {
        Criterion criterion = null;
        List<Criterion> criterionList = new ArrayList<Criterion>();
        if (sysUser != null)
        {
            // 模糊匹配用户名
            if (StringUtils.isNotBlank(sysUser.getUserName()))
            {
                criterion = Restrictions.like("userName", StringUtils.trim(sysUser.getUserName()), MatchMode.ANYWHERE);
                criterionList.add(criterion);
            }
            // 用户类型
            if (sysUser.getUserType() != null)
            {
                if (sysUser.getUserType() == Constants.USER_TYPE_COMMON)
                {
                    criterion = Restrictions.le("userType", Constants.USER_TYPE_EXPERT); // 普通用户列表
                }
                else
                {
                    criterion = Restrictions.eq("userType", sysUser.getUserType());
                }
                criterionList.add(criterion);
            }
            // 精确匹配用户状态
            if (sysUser.getStatus() != null)
            {
                criterion = Restrictions.eq("status", sysUser.getStatus());
                criterionList.add(criterion);
            }
        }

        Criterion[] criterions = criterionList.toArray(new Criterion[criterionList.size()]);
        Criteria criteria = createCriteria(criterions);

        return criteria.list();
    }

    /**
     * 根据用户名,密码查找用户
     * @param userName 用户名
     * @param userPassword 密码
     * @return
     */
    @Override
    public SysUser getUser(String userName, String userPassword)
    {
        String hql = "select t from SysUser t where t.userName=:userName and t.userPassword = :userPassword";
        Query query = getSession().createQuery(hql).setParameter("userName", userName);
        query.setParameter("userPassword", userPassword);
        return (SysUser) query.uniqueResult();
    }

    /**
     * 根据序列号,硬盘序列号,网卡地址查找用户
     * @param serialNo 序列号
     * @param diskSerial 硬盘序列号
     * @param macAddr 网卡地址
     * @return
     */
    @Override
    public SysUser getUser(String serialNo, String diskSerial, String macAddr)
    {
        String hql = "select t from SysUser t where t.serialNo=:serialNo and t.diskSerial = :diskSerial and t.macAddr=:macAddr";
        Query query = getSession().createQuery(hql);
        query.setParameter("serialNo", serialNo);
        query.setParameter("diskSerial", diskSerial);
        query.setParameter("macAddr", macAddr);
        return (SysUser) query.uniqueResult();
    }

    /**
     * 根据盒子序列号找用户List
     * @param serialNo 序列号
     * @return
     */
    @SuppressWarnings("unchecked")
    @Override
    public List<SysUser> findUserList(String serialNo)
    {
        Criteria criteria = getSession().createCriteria(entityClass).add(Restrictions.eq("serialNo", serialNo));
        return criteria.list();
    }

    /**
     * 根据用户的状态和用户类型查找用户
     * @param status 状态
     * @param userType 用户类型
     * @return
     */
    @SuppressWarnings("unchecked")
    @Override
    public List<SysUser> findUserList(int userType, int status)
    {
        Criteria criteria = getSession().createCriteria(entityClass).add(Restrictions.eq("userType", userType)).add(Restrictions.eq("status", status));
        return criteria.list();
    }

    /**
     * 获取4s/专家的视频序列号
     */
    @Override
    public int getVideoSystemId()
    {
        return seqVideoSystemIdGenerator.nextIntValue();
    }

    /**
     * 根据盒子序列号和用户状态查找用户
     * @param serialNo 序列号
     * @param status 状态
     * @return
     */
    @Override
    public SysUser getUser(String serialNo, int status)
    {
        Criteria criteria = getSession().createCriteria(entityClass).add(Restrictions.eq("serialNo", serialNo)).add(Restrictions.eq("status", status));
        return (SysUser) criteria.uniqueResult();
    }

    /**
     * 获取视频序列号产生器对象
     * @param getSeqVideoSystemIdGenerator
     * @return
     */
    public OracleSequenceMaxValueIncrementer getSeqVideoSystemIdGenerator()
    {
        return seqVideoSystemIdGenerator;
    }

    @Override
    public Integer getTotalCount(Integer userType, Integer status)
    {
        Long count = (Long) getSession().createCriteria(entityClass).setProjection(Projections.rowCount()).add(Restrictions.eq("userType", userType))
        .add(Restrictions.eq("status", status)).uniqueResult();
        return new Integer(count.intValue());
      
    }
   
   
    /**
     * 根据序列号查找总数
     * @param Str
     * @return
     */
    public Integer getTotalCount(String serialNo)
    {
        Long count = (Long) getSession().createCriteria(entityClass).setProjection(Projections.rowCount()).add(Restrictions.eq("serialNo", serialNo)).uniqueResult();
        return new Integer(count.intValue());
    }
}
分享到:
评论

相关推荐

    DAOimpl(删除,查询)代码.pdf

    `DAOimpl`类是DAO接口的具体实现,通常包含对数据库的增删改查(CRUD)操作。在提供的代码中,我们看到了两个主要方法:`findProfeUserByProfe_id`(查询)和`updateProfeUser`(更新)。 1. **查询方法** `...

    自动生成sqlmap,do,dao,daoimpl

    【标题】"自动生成SQLMap、DO、DAO和DAOImpl" 在软件开发中,数据库操作是必不可少的一部分。SQLMap、DO(Data Object)、DAO(Data Access Object)和DAOImpl是Java开发中常见的模式,用于处理数据库交互。这些...

    mybatis反向生成代码工具(包含service,serviceImpl,dao,entity,daoImpl)

    在开发过程中,我们经常需要编写大量的DAO(数据访问对象)、Service、ServiceImpl、Entity以及DAOImpl等类来完成数据库操作。然而,手动编写这些代码不仅耗时,而且容易出错。为了解决这个问题,"mybatis反向生成...

    jsp简单示例

    本示例提供了一个简单的JSP应用,涵盖了DAO(Data Access Object)、DAOImpl(DAO实现)以及Model模式,这些都是Web开发中常用的设计模式和技术。 1. **JSP基本结构** JSP文件由两部分组成:静态内容(HTML、CSS、...

    ibatis代码自动生成工具项目

    自动生成ibatis所需文件,达到快速查询,减少工作量的效果 CorpChannelDAO.java CorpChannelDAOimpl.java CorpChannel.java CorpChannelExample.java game_channel__corp_channel_SqlMap.xml 详情步骤请见...

    mybatis的逆向工程代码

    MyBatis是一个强大的Java持久层框架,它允许开发者将SQL语句与Java代码分离,提供了更灵活的数据库访问方式。逆向工程(Reverse Engineering)在MyBatis中的应用主要是指自动生成MyBatis的Mapper接口、Mapper XML...

    Spring+Struts+Hibernate开发手册.doc

    Spring+Struts+Hibernate开发手册 本文将介绍SSH框架的开发手册,主要包括Spring、Struts和...SSH框架的开发手册主要包括目录结构、开发流程、DAO接口和DAOImpl类、Service类、Action类和Struts配置文件等几个方面。

    Spring struts文档上传代码

    实体类entity:文档对象实体 action: 是struts中action层 主要处理表现层的东西 facade:只是一个门面模式(不起多大的作用)主要是... (**DAO是一个接口 每个这样的dao都有个它的实现类与它对应 -也就是**DAOImpl)

    简单的jsp+servlet+javaBean访问mysql数据库

    在IT领域,尤其是在Web开发中,`JSP (JavaServer Pages)`、`Servlet`和`JavaBean`是构建动态网站的常用技术栈。本案例主要展示了如何利用这三种技术来实现对MySQL数据库的访问。接下来,我们将深入探讨这些知识点。...

    IBatisNet的Codesmith模板

    DaoImpl, the C# DAO implementation class that implements the interface referred by DaoIntf. SqlMap, the IBatis.NET SQL mapping file that contains SQL statements used in the DaoImpl above.

    java+jsp+servlet+mysql简答宠物管理系统源码

    一个使用jsp+servlet+mysql开发简单宠物管理系统,功能如下: 包含宠物的按分类查询,添加宠物、编辑宠物、删除宠物,功能比较简单,适合小白入门。 原来没有编辑、删除功能,在基础上做了升级,使之成为了一个完成...

    new project3

    从描述来看,这次更新主要集中在领域(domain)的重新设计以及DAO(Data Access Object)和DAOImpl(DAO实现)层面。 在IT行业中,"domain"通常指的是业务领域,它代表了应用的核心逻辑和模型。重新设计domain意味...

    springAOP代理讲解

    DaoImpl d = new DaoImpl(); Transction t = new Transction(); DaoImplProxy dp = new DaoImplProxy(d, t); dp.save(); dp.update(); dp.delete(); } } ``` 测试类创建了`DaoImpl`、`Transction`和`...

    java封转dao层(源码),只需传路径,版本一

    4. 当调用`new DaoImpl("po.User")`时,实际上创建的是`DaoImpl&lt;User&gt;`的实例,它已经完成了与User实体类相关的数据库操作准备。 标签"封转dao层"表明这是一个专注于提高DAO层开发效率的技术。使用这种技术,开发者...

    基于WIKI的课程交流系统

    其中我负责总体设计及协作交流管理模块的设计开发 技术要求:1、采用MVC+DAO模式设计开发,其中的VO包主要处理表字段,DAO包主要包括数据操作方法的声明,这些方法在DAOImpl包中实现。在DAO工厂模式的基础上,引入...

    程序间耦合.docx

    这种方式降低了`DaoImpl`和`ServicesImpl`之间的耦合,因为对象的创建不再硬编码在`DaoImpl`内部,而是由外部的配置文件决定。 `Client`类是模拟的Web层,它同样通过`BeanFactory`获取`Dao`的实例,而不是直接创建...

    flex和java整合常见问题分析

    这段配置指定了一个名为`dao`的服务目的地,它的实现类为`dao.daoimpl.DaoImpl`。 4. **Tomcat配置与启动**: - 确保Tomcat服务器正确安装,并且已经将BlazeDS的WAR包部署至`webapps`目录下。 - 启动Tomcat...

    SSH模板,里面包括了基本的SSH配置

    这个压缩包文件提供了SSH集成的基础配置,旨在帮助开发者快速搭建项目结构,从而节省时间,让他们能够专注于编写业务逻辑,如DAO、DAOImpl、Action和Service层的代码。 1. **Struts2**:这是一个强大的MVC(Model-...

    SSH2分页算法的实现

    根据描述,项目涉及到了多个层次,包括DAO层、DAOImpl层、Service层和服务实现层(ServiceImpl)。为了更好地理解分页算法在整个系统中的作用,我们先来了解这些层次的具体职责: - **DAO层**:负责数据访问操作,...

    JavaWeb学生成绩管理系统,编写了一个简单的学生成绩管理系统,完成学生信息及课程成绩的增删改查操作

    3. DaoImpl实现类 4 4. Servlet控制器 7 5. 数据库 7 6. Servlet 和 Student的jsp 8 四、课程成绩管理 15 (一) 添加 15 (二) 删除 15 (三) 修改 16 (四) 查询 17 实验问题 17 1 复制的项目student直接部署然后访问,...

Global site tag (gtag.js) - Google Analytics