dao层实现类的常见写法

记录下一个dao层类的写法,方便以后的使用。

  1 package com.bupt.auth.dao.impl;
  2
  3 import java.util.ArrayList;
  4 import java.util.HashSet;
  5 import java.util.List;
  6 import java.util.Set;
  7 import java.util.concurrent.CopyOnWriteArraySet;
  8
  9 import org.springframework.stereotype.Repository;
 10
 11 import com.bupt.auth.dao.RoleDao;
 12 import com.bupt.auth.dao.base.BaseDaoImpl;
 13 import com.bupt.auth.entity.Permission;
 14 import com.bupt.auth.entity.Role;
 15 import com.bupt.auth.exception.MyException;
 16
 17 @Repository("roleDao")
 18 public class RoleDaoImpl extends BaseDaoImpl<Role> implements RoleDao {
 19
 20     @Override
 21     public Role findRoleAdminByUserId(Long id) {
 22         // TODO Auto-generated method stub
 23         Role role = this.findRoleByRoleNameAndUserId(id, "administrator");
 24
 25         return role;
 26     }
 27
 28     @SuppressWarnings("unchecked")
 29     @Override
 30     public List<Role> findRoleByUserId(Long id) {
 31         // TODO Auto-generated method stub\
 32         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";
 33         List<Role> list = getSession().createQuery(sql).setLong("id", id).list();
 34
 35         if(list == null || list.size() == 0)
 36             return null;
 37
 38         List<Role> result = new ArrayList<Role>();
 39         for(Role role:list){
 40             if(!result.contains(role))
 41                 result.add(role);
 42         }
 43
 44         return result;
 45     }
 46
 47     @SuppressWarnings("unchecked")
 48     @Override
 49     public Role findRoleByRoleNameAndUserId(Long id, String rolename) {
 50         // TODO Auto-generated method stub
 51         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";
 52         List<Role> list = getSession().createQuery(sql).setLong("id", id).setString("rolename", rolename).list();
 53
 54         if(list == null || list.size() == 0)
 55             return null;
 56
 57         return list.get(0);
 58     }
 59
 60
 61     @SuppressWarnings("unchecked")
 62     @Override
 63     public List<Role> findRoleByPermId(Long id) {
 64         // TODO Auto-generated method stub
 65         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";
 66         List<Role> list = getSession().createQuery(sql).setLong("id", id).list();
 67
 68         if(list == null || list.size() == 0)
 69             return null;
 70
 71         List<Role> result = new ArrayList<Role>();
 72         for(Role role:list){
 73             if(!result.contains(role))
 74                 result.add(role);
 75         }
 76
 77         return result;
 78     }
 79
 80     @SuppressWarnings("unchecked")
 81     @Override
 82     public boolean deleteRolesPermissionByRoleIdAndPermId(Role role,
 83             Long permid) throws MyException {
 84         // TODO Auto-generated method stub
 85         //Role role = this.loadRoleByRoleId(roleid);
 86         if(role == null)
 87             throw new MyException("Role Not Found", "301");
 88
 89         Set<Permission> pset = role.getPermissions();
 90
 91         if(pset == null){
 92             throw new MyException("Role has no permissions", "");
 93         }
 94         if(pset.size() != 0)
 95         {
 96             Set<Permission> psetCopy = new HashSet<Permission>(pset);
 97
 98             for(Permission p : psetCopy)
 99             {
100                 if(p.getId().longValue() == permid.longValue()){
101                     pset.remove(p);
102                 }
103             }
104         }
105
106
107         this.update(role);
108
109         return true;
110     }
111
112     @Override
113     public Set<String> findAccessTokensByRoleId(Long roleid) {
114         // TODO Auto-generated method stub
115         Role role = this.loadRoleByRoleId(roleid);
116
117         if(role == null)
118             return null;
119
120         return role.getAccessTokens();
121     }
122
123     @Override
124     public boolean deleteAccessTokenByRoleIdAndTokenString(Long roleid,
125             String accessToken) throws MyException {
126         // TODO Auto-generated method stub
127         Role role = this.loadRoleByRoleId(roleid);
128
129         if(role == null)
130             throw new MyException("Role Not Found!", "301");
131
132         Set<String> accessTokens = role.getAccessTokens();
133         accessTokens.remove(accessToken);
134         this.update(role);
135
136         return true;
137     }
138
139     @Override
140     public Role loadRoleByRoleId(Long roleid){
141         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";
142         List<Role> list = this.getSession().createQuery(sql).setLong("id", roleid).list();
143
144         if(list == null || list.size() == 0){
145             String sql2 = "select r from Role r inner join fetch r.ownerUser inner join fetch r.accessTokens where r.id = :id";
146             List<Role> list2 = this.getSession().createQuery(sql2).setLong("id", roleid).list();
147
148             if(list2 == null || list2.size() == 0){
149                 return null;
150             }
151
152             return list2.get(0);
153         }
154
155         return list.get(0);
156     }
157 }
时间: 2024-10-07 03:02:20

dao层实现类的常见写法的相关文章

我的Dao层

Spring 为整合 Hibernate3 提供了两个工具类,分别是 HibernateTemplate 和 HibernateDaoSupport ,但是 Spring 不推荐使用这两个实现 Dao 层,因为操作复杂 CRUD 不是很灵活,而是推荐使用通过注入 SessionFactory 的方式,用过 getCurrentSession() 获取当前线程的 Session 对象,然后进行持久化. 下面是我在自己练手项目中实现的 Dao 层: 1 .  Dao层的顶层接口类: package

ssh_maven的搭建之dao层的开发

之前都是使用我们传统的方式进行引入jar包,现在我们使用maven进行管理依赖,这样,我们的jar就不需要我们进行管理,而且,我们的maven还可以进行项目构建,一个项目从编写源代码到编译,测试,运行,打包,部署的过程,只需要对应的一个命令即可以了,方便了很多 这里,我们直接进入主题,像eclipse中怎么配置maven等这里我们暂时不说,直接从创建项目开始,而且我们采用的是纯配置文件的方式 我们可以看一下我们的目录结构 这咯我们的ssh_parent是父工程,而剩下的都是它的子模块 这里我们的

SpringBoot+MyBatis项目Dao层最简单写法

前言 DAO(Data Access Object) 是数据访问层,说白了就是跟数据库打交道的,而数据库都有哪几种操作呢?没错,就是增删改查.这就意味着Dao层要提供增删改查操作. 不知道大家是怎么写Dao层的接口的.如果你没有一个好的思路,那就看看我的思路吧.如果你有更好的思路,欢迎指正. 正文 1.每一个实体类对应一个Dao接口文件和一个mybatis文件 结构如下: 2.UserDao采用统一写法 Dao层只写六个接口就能解决百分之九十的问题 User.java package com.e

java web项目DAO层通用接口BaseDao与实现类BaseDaoImpl

在spring+hibernate的web项目中,处理数据层通常会使用Spring框架提供的HibernateTemplate类提供的方法.通常的用法是每一个实体类对应的去写DAO层的接口和实现类.每个实现类中都写hibernateTemp.save(entity).hibernateTemp.update(entity).hibernateTemp.get(id)...这样写固然没错,但存在着大量的重复代码.所以懒惰的程序员烦了,他们要写一个通用的实现类来解决这个问题,让DAO层解放出来.如果

沫沫金-Mybatis工具类,生成dao层xml、mapper文件和实体类entity层

Mybatis Generator工具使用起来,总感觉不太灵活加上初次环境配置麻烦,特编写java文件 单文件不依赖,直接生成.源码如下(此为Oracle数据库版) package net.icarefx.booking.util; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Outpu

Mybatis配置文件和实体类的映射文件,以及dao层的书写

mybatis-config.xml,配置文件,用于连接数据库.底层使用的是oracle数据库的emp表 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd&

spring boot集成mybatis 自动生成实体类和mapper文件、Dao层

1.创建spring boot集成mybatis请见 2.在resources目录下新键mybatis-generator文件夹,并在文件夹中新键mybatis-generatorConfig.xml文件和mybatis-generatorinit.properties两个文件 mybatis-generatorinit.properties jdbc_driver=oracle.jdbc.driver.OracleDriver jdbc_url=jdbc:oracle:thin:@loclho

Java高并发秒杀API之业务分析与DAO层

课程介绍 高并发和秒杀都是当今的热门词汇,如何使用Java框架实现高并发秒杀API是该系列课程要研究的内容.秒杀系列课程分为四门,本门课程是第一门,主要对秒杀业务进行分析设计,以及DAO层的实现.课程中使用了流行的框架组合SpringMVC+Spring+MyBatis,还等什么,赶快来加入吧! 第1章 课程介绍 本章介绍秒杀系统的技术内容,以及系统演示.并介绍不同程度的学员可以学到什么内容. 第2章 梳理所有技术和搭建工程 本章首先介绍秒杀系统所用框架和技术点,然后介绍如何基于maven搭建项

一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构

表现层就是看到的东西,比如你现在看到的当前页面控制层就将你的请求从页面传到后台代码逻辑层就是处理你的请求的代码DAO层就是将数据存到数据库中的代码数据库就是数据库了,存东西用的DAO层就是将访问数据库的代码,数据库层是数据存储与管理的代码 O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据.在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO. VO,值对象