现在的位置: 首页 > 综合 > 正文

ASP.NET&Spring.NET&NHibernate最佳实践(十三)——第4章权限子系统(6)

2012年07月15日 ⁄ 综合 ⁄ 共 6536字 ⁄ 字号 评论关闭
用户数据访问接口(IUserDao.cs)
using System;
using Guushuuse.SalaryPrj.Security.DomainModel;
using System.Collections;

namespace Guushuuse.SalaryPrj.Security.Dao
{
    
/// <summary>
    
/// 用户数据访问接口
    
/// </summary>

    public interface IUserDao
    
{
        
void CreateUser(User user);
        
void DeleteUser(User user);
        IList FindUsersByEmail(Application application, 
string emailToMatch, int pageIndex, int pageSize, out int totalRecords);
        IList FindUsersByEmail(Application application, 
string emailToMatch);
        IList FindUsersByName(Application application, 
string usernameToMatch);
        IList FindUsersByName(Application application, 
string usernameToMatch, int pageIndex, int pageSize, out int totalRecords);
        IList FindUsersInRole(Application application, Role role, 
string usernameToMatch);
        
int GetActiveUsersCount(Application application, DateTime activeDate);
        IList GetAllUsers();
        IList GetInactiveUsers(Application application, DateTime userInactiveSinceDate);
        IList GetInactiveUsers(Application application, DateTime userInactiveSinceDate, 
bool isAnonymous);
        User GetUser(
int userID);
        User GetUser(Application application, 
string username);
        IList GetUsers(Application application, 
int pageIndex, int pageSize, out long totalRecords);
        IList GetUsers(Application application, 
string email);
        
int GetUsersCountInRole(Application application, Role role);
        IList GetUsersInRole(Application application, Role role);
        
void UpdateUser(User user);
    }

}

用户数据访问类(UserDao.cs)

using System;
using System.Collections.Generic;
using System.Text;
using Spring.Data.NHibernate.Support;
using Spring.Transaction.Interceptor;
using Guushuuse.SalaryPrj.Security.DomainModel;
using System.Collections;
using Spring.Data.NHibernate;
using NHibernate.Type;
using NHibernate;
using Spring.Dao.Support;

namespace Guushuuse.SalaryPrj.Security.Dao
{
    
/// <summary>
    
/// 用户数据访问类
    
/// </summary>

    public class UserDao : HibernateDaoSupport, IUserDao
    
{
        
public UserDao()
        
{

        }


        [Transaction(ReadOnly 
= false)]
        
public void CreateUser(User user)
        
{
            HibernateTemplate.Save(user);
        }


        [Transaction(ReadOnly 
= false)]
        
public void UpdateUser(User user)
        
{
            HibernateTemplate.Update(user);
        }


        [Transaction(ReadOnly 
= false)]
        
public void DeleteUser(User user)
        
{
            HibernateTemplate.Delete(user);
        }


        
public IList GetAllUsers()
        
{
            
return HibernateTemplate.LoadAll(typeof(User));
        }


        
public IList GetUsers(Application application, string email)
        
{
            
if (email != null)
            
{
                
string hql = " from User user where user.Application = ? and user.Email = ?";

                
return HibernateTemplate.Find(hql, new object[] { application, email });
            }

            
else
            
{
                
string hql = " from User user where user.Application = ? and user.Email is null";

                
return HibernateTemplate.Find(hql, new object[] { application });
            }

        }



        
public IList GetInactiveUsers(Application application, DateTime userInactiveSinceDate)
        
{
            
string hql = " from User user where user.Application = ? and user.LastActivityDate < ?";

            
return HibernateTemplate.Find(hql, new object[] { application, userInactiveSinceDate });
        }


        
public IList GetInactiveUsers(Application application, DateTime userInactiveSinceDate,
            
bool isAnonymous)
        
{
            
string hql = " from User user where user.Application = ? and user.LastActivityDate < ? and user.IsAnonymous = ?";

            
return HibernateTemplate.Find(hql, new object[] { application, userInactiveSinceDate,
                isAnonymous}
);

        }


        
public IList GetUsers(Application application, int pageIndex, int pageSize, out long totalRecords)
        
{
            
string hql = " from User user where user.Application = ?";

            IList users 
= (IList)HibernateTemplate.Execute(new GetObjectsCallback(HibernateTemplate, hql,
                
new object[] { application }null, pageIndex, pageSize), true);

            hql 
= "select count(user.ID) from User user where user.Application = ?";

            totalRecords 
= (long)DataAccessUtils.RequiredUniqueResultSet(HibernateTemplate.Find(hql, new object[] { application }));

            
return users;
        }


        
public IList GetUsersInRole(Application application, Role role)
        
{
            
return new ArrayList();
        }


        
public IList FindUsersByName(Application application, string usernameToMatch)
        
{
            
string hql = " from User user where user.Application = ? and user.Username like ?";

            
return HibernateTemplate.Find(hql, new object[] { application, "%" + usernameToMatch + "%" });
        }



        
public IList FindUsersByName(Application application, string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
        
{
            
string hql = " from User user where user.Application = ? and user.Username like ?";

            IList users 
= (IList)HibernateTemplate.Execute(new GetObjectsCallback(HibernateTemplate, hql,
                
new object[] { application, "%" + usernameToMatch + "%" }null, pageIndex, pageSize), true);

            hql 
= "select count(user.ID) from User user where user.Application = ?";

            totalRecords 
= (int)DataAccessUtils.RequiredUniqueResultSet(HibernateTemplate.Find(hql, new object[] { application }));

            
return users;
        }


        
public IList FindUsersByEmail(Application application, string emailToMatch)
        
{
            
string hql = " from User user where user.Application = ? and user.Email like ?";

            
return HibernateTemplate.Find(hql, new object[] { application, "%" + emailToMatch + "%" });
        }


        
public IList FindUsersByEmail(Application application, string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
        
{
            
string hql = " from User user where user.Application = ? and user.Email like ?";

            IList users 
= (IList)HibernateTemplate.Execute(new GetObjectsCallback(HibernateTemplate, hql,
                
new object[] { application, "%" + emailToMatch + "%" }null, pageIndex, pageSize), true);

            hql 
= "select count(user.ID) from User user where user.Application = ?";

            totalRecords 
= (int)DataAccessUtils.RequiredUniqueResultSet(HibernateTemplate.Find(hql, new object[] 

抱歉!评论已关闭.