dao层实现类的常见写法
记录下一个dao层类的写法,方便以后的使用。
package com.bupt.auth.dao.impl; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet; import org.springframework.stereotype.Repository; import com.bupt.auth.dao.RoleDao;
import com.bupt.auth.dao.base.BaseDaoImpl;
import com.bupt.auth.entity.Permission;
import com.bupt.auth.entity.Role;
import com.bupt.auth.exception.MyException; @Repository("roleDao")
public class RoleDaoImpl extends BaseDaoImpl<Role> implements RoleDao { @Override
public Role findRoleAdminByUserId(Long id) {
// TODO Auto-generated method stub
Role role = this.findRoleByRoleNameAndUserId(id, "administrator"); return role;
} @SuppressWarnings("unchecked")
@Override
public List<Role> findRoleByUserId(Long id) {
// TODO Auto-generated method stub\
String sql = "select r from Role r inner join fetch r.ownerUser u inner join fetch r.accessTokens left join fetch r.permissions where u.id = :id";
List<Role> list = getSession().createQuery(sql).setLong("id", id).list(); if(list == null || list.size() == 0)
return null; List<Role> result = new ArrayList<Role>();
for(Role role:list){
if(!result.contains(role))
result.add(role);
} return result;
} @SuppressWarnings("unchecked")
@Override
public Role findRoleByRoleNameAndUserId(Long id, String rolename) {
// TODO Auto-generated method stub
String sql = "select r from Role r inner join fetch r.ownerUser u inner join fetch r.accessTokens where u.id = :id and r.name = :rolename";
List<Role> list = getSession().createQuery(sql).setLong("id", id).setString("rolename", rolename).list(); if(list == null || list.size() == 0)
return null; return list.get(0);
} @SuppressWarnings("unchecked")
@Override
public List<Role> findRoleByPermId(Long id) {
// TODO Auto-generated method stub
String sql = "select r from Role r inner join fetch r.ownerUser inner join fetch r.accessTokens inner join fetch r.permissions p where p.id = :id";
List<Role> list = getSession().createQuery(sql).setLong("id", id).list(); if(list == null || list.size() == 0)
return null; List<Role> result = new ArrayList<Role>();
for(Role role:list){
if(!result.contains(role))
result.add(role);
} return result;
} @SuppressWarnings("unchecked")
@Override
public boolean deleteRolesPermissionByRoleIdAndPermId(Role role,
Long permid) throws MyException {
// TODO Auto-generated method stub
//Role role = this.loadRoleByRoleId(roleid);
if(role == null)
throw new MyException("Role Not Found", "301"); Set<Permission> pset = role.getPermissions(); if(pset == null){
throw new MyException("Role has no permissions", "");
}
if(pset.size() != 0)
{
Set<Permission> psetCopy = new HashSet<Permission>(pset); for(Permission p : psetCopy)
{
if(p.getId().longValue() == permid.longValue()){
pset.remove(p);
}
}
} this.update(role); return true;
} @Override
public Set<String> findAccessTokensByRoleId(Long roleid) {
// TODO Auto-generated method stub
Role role = this.loadRoleByRoleId(roleid); if(role == null)
return null; return role.getAccessTokens();
} @Override
public boolean deleteAccessTokenByRoleIdAndTokenString(Long roleid,
String accessToken) throws MyException {
// TODO Auto-generated method stub
Role role = this.loadRoleByRoleId(roleid); if(role == null)
throw new MyException("Role Not Found!", "301"); Set<String> accessTokens = role.getAccessTokens();
accessTokens.remove(accessToken);
this.update(role); return true;
} @Override
public Role loadRoleByRoleId(Long roleid){
String sql = "select r from Role r inner join fetch r.ownerUser inner join fetch r.permissions inner join fetch r.accessTokens where r.id = :id";
List<Role> list = this.getSession().createQuery(sql).setLong("id", roleid).list(); if(list == null || list.size() == 0){
String sql2 = "select r from Role r inner join fetch r.ownerUser inner join fetch r.accessTokens where r.id = :id";
List<Role> list2 = this.getSession().createQuery(sql2).setLong("id", roleid).list(); if(list2 == null || list2.size() == 0){
return null;
} return list2.get(0);
} return list.get(0);
}
}
dao层实现类的常见写法的更多相关文章
- 四、spring集成ibatis进行项目中dao层基类封装
Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库 ...
- sping整合hibernate之二:dao层开发
在上一篇日志中将hibernate的会话工厂sessionFactory注入到了spring的容器中,但这样还不够,因为hibernate的增删改查是要使用事务机制的, 所以还要在spring中配置 ...
- ssh_maven的搭建之dao层的开发
之前都是使用我们传统的方式进行引入jar包,现在我们使用maven进行管理依赖,这样,我们的jar就不需要我们进行管理,而且,我们的maven还可以进行项目构建,一个项目从编写源代码到编译,测试,运行 ...
- mybatis dao 层开发简易版 非整合 spring
同样老习惯,先上项目结构截图 首先 补充上篇文中缺失的 mysql demo 用的 小脚本 drop database if exists mybatis; CREATE DATABASE `myba ...
- hibernate+pageBean实现分页dao层功能代码
今天闲来无事,摆弄了一下分页,突然发现很多代码长时间不用就生梳了,虽然有些基础,但没有一篇整合的.这里还是简单示例,主要是以后自己翻着看不用百度找啊找找不到一篇想要的 1.PageBean实体类,一页 ...
- [MyBatis]DAO层只写接口,不用写实现类
团队开发一个项目,由老大架了一个框架,遇到了DAO层不用写接口了,我也是用了2次才记住这个事的,因为自己一直都是习惯于写DAO层的实现类,所以,习惯性的还是写了个实现类.于是遇到错误了. 找不到那个方 ...
- SpringBoot+MyBatis项目Dao层最简单写法
前言 DAO(Data Access Object) 是数据访问层,说白了就是跟数据库打交道的,而数据库都有哪几种操作呢?没错,就是增删改查.这就意味着Dao层要提供增删改查操作. 不知道大家是怎么写 ...
- java中dao层的通用层,通过反射机制,操作数据库的增删改,适用的范围是不包含属性类
这里首先必须注意的是:类的类名.字段必须与数据库中的表名和字段名保持一致,否则无法通过反射机制作出通用层 /** * 学生信息类,数据库中的StuInfo表 * */public class StuI ...
- controller层负责创建类传递类给service;service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性;dao层负责数据的持久化
controller层负责创建类传递类给service:service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性:dao层负责数据的持久化
随机推荐
- delphi Edit - TActionList
Edit TEditCut TEditCopy TEditpaste TEditSelectAll TEditUndo TEditDelete 编辑 ...
- android 用ListView实现表格样式
原文:http://blog.csdn.net/centralperk/article/details/8016350 效果图: 源码下载地址:http://download.csdn.net/det ...
- 安卓开发之探秘蓝牙隐藏API
上次讲解Android的蓝牙基本用法,这次讲得深入些,探讨下蓝牙方面的隐藏API.用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在S ...
- [AngularJS] Test an Angular Component with $componentController
Traditionally you had to create DOM elements to test a directive but by shifting our focus to compon ...
- Shell脚本的安全性
Shell脚本给管理和使用系统都带来了巨大的便利,然后在多用户系统中,也带来了许多安全性问题.在脚本中可能存在的安全性问题如下: (1)在脚本中使用cd命令,切换到不安全的目录执行脚本. (2)在脚本 ...
- IOS 使用Interface Builder开发界面入门与技巧
引言: 通过Interface Builder(简称IB)来制作界面一直是iOS开发界饱受争议的方式.主要争议的话题是不太适合团队协作开发,再就是对IB的使用比较生疏,觉得IB只能完成一些很简单的功能 ...
- java_DAO类基本设计
package cn.itcast.oa.base; import java.util.List; public interface BaseDao<T> { void save(T en ...
- debian root用户在shell下如何能够使用颜色
转载:http://hi.baidu.com/aivera/item/f31c4a590ef72609e6c4a596 编辑 /root/.bashrc 这个文件, 把里面这几行前面的#号去掉就可以了 ...
- QTP自学攻略
QTP自学攻略 自学总是很痛苦的,看大量的书籍,可是学到的东西却不是那么实用,下面整理了一些在QTP中经常需要的函数,以及方法很实用! QTP常用函数 1, 获取对话框相应的文字: GetVisi ...
- java中关于json传图片的方法
一般来说传图片可以以流的形式来传输,即便是用json传输,一般也都是传一个地址,而图片都存在服务器上,然后顺着地址发送请求下载图片. 但是这次公司的项目中,图片是存在oracle数据库中的blob字段 ...