从0开始学习ssh之basedao

用于所有dao里边会有许多相同的方法,例如save,update等等。应此设计一个basedao,所有dao都继承它。这样可以省去许多工作量。

basedao如下

package cn.itcast.oa.base;

import java.util.List;

public interface BaseDao<T> {

	/**
	 * 保存实体
	 *
	 * @param entity
	 */
	void save(T entity);

	/**
	 * 删除实体
	 *
	 * @param id
	 */
	void delete(Long id);

	/**
	 * 更新实体
	 *
	 * @param entity
	 */
	void update(T entity);

	/**
	 * 按id查询
	 *
	 * @param id
	 * @return
	 */
	T getById(Long id);

	/**
	 * 按id查询
	 *
	 * @param ids
	 * @return
	 */
	List<T> getByIds(Long[] ids);

	/**
	 * 查询所有
	 *
	 * @return
	 */
	List<T> findAll();

}

  basedaoimpl如下

package cn.itcast.oa.base;

import java.lang.reflect.ParameterizedType;
import java.util.List;

import javax.annotation.Resource;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

@SuppressWarnings("unchecked")
public abstract class BaseDaoImpl<T> implements BaseDao<T> {

	@Resource
	private SessionFactory sessionFactory;
	private Class<T> clazz;

	public BaseDaoImpl() {
		// 使用反射技术得到T的真实类型
		ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); // 获取当前new的对象的 泛型的父类 类型
		this.clazz = (Class<T>) pt.getActualTypeArguments()[0]; // 获取第一个类型参数的真实类型
		System.out.println("clazz ---> " + clazz);
	}

	/**
	 * 获取当前可用的Session
	 *
	 * @return
	 */
	protected Session getSession() {
		return sessionFactory.getCurrentSession();
	}

	public void save(T entity) {
		getSession().save(entity);
	}

	public void update(T entity) {
		getSession().update(entity);
	}

	public void delete(Long id) {
		Object obj = getById(id);
		if (obj != null) {
			getSession().delete(obj);
		}
	}

	public T getById(Long id) {
		return (T) getSession().get(clazz, id);
	}

	public List<T> getByIds(Long[] ids) {
		return getSession().createQuery(//
				"FROM User WHERE id IN (:ids)")//
				.setParameterList("ids", ids)//
				.list();
	}

	public List<T> findAll() {
		return getSession().createQuery(//
				"FROM " + clazz.getSimpleName())//
				.list();
	}

}

  

时间: 2024-08-15 01:33:18

从0开始学习ssh之basedao的相关文章

从0开始学习ssh之搭建环境

ssh即struts+spring+Hibernate,从头开始学习这个框架. struts环境配置,首先在apps目录下找到struts2-blank-xxx.war这个文件,这是已经发布好的war包.其中找到lib文件夹,添加其中所有jar到网站lib下面.再找到src/java下面的struts.xml文件,添加到网站的src文件夹中.打开web.xml拷贝struts的核心配置到网站的web.xml,核心配置如下 <filter> <filter-name>struts2&

从0开始学习ssh之日志工具与配置log4j

添加slf4j-api-1.6.1,slf4j-log4j12-1.6.1,log4j-1.2.15三个jar包到lib文件夹下就可以使用log4j日志文件.具体配置在log4j.properties文件中.修改该文件不同配置可以实现不同功能.例如log4j.rootLogger=warn, stdout修改为log4j.rootLogger=error, stdout.则只显示错误.具体如下 debug 调试信息info 一般信息warn 警告error 错误fatal 严重错误

从0开始学习ssh之岗位管理

岗位应该有如下属性,id.名称.说明.新建role.java.添加id,name,description并增加三个的get set方法. 之后建立Role.hbm.xml 并加入到applicationContext.xml.只有在执行sessionFactory时才会自动建表. 之后可以开始设计action 同时要在struts中配置好对应的action.根据action写好对应的service和dao.写对应jsp页面 总结一下,每一个功能都可以用如下方式实现 1,设计实体/表 设计实体 -

学习SSH框架

1.SSH框架的认知 在做相关的java的网页的开发制作时,良好的层次分解是十分有比要的,所以我们在云涌第三方的框架之下来简化还有名了我们相关的网站的开发. SSH框架实则为Struct + spring + hibernate 的三个组成的,其中struct,专注与前台的相关的请求的所对应的ActionForm还有其相关跳转的Action来 处理得到相关的JSP页面,从而来更新或是条状到相关用户的请求的服务页面,或是信息页面.而Hibernate的作用是体现在数据的持久化的层次中,我们对于页

【转载】从0开始学习 GITHUB 系列之「向GITHUB 提交代码」

转载自http://stormzhang.com 之前的这篇文章「从0开始学习 GitHub 系列之「Git速成」」相信大家都已经对 Git 的基本操作熟悉了,但是这篇文章只介绍了对本地 Git 仓库的基本操作,今天我就来介绍下如何跟远程仓库一起协作,教你们向 GitHub 上提交你们的第一行代码! 1. SSH 你拥有了一个 GitHub 账号之后,就可以自由的 clone 或者下载其他项目,也可以创建自己的项目,但是你没法提交代码.仔细想想也知道,肯定不可能随意就能提交代码的,如果随意可以提

hadoop1.0.3学习笔记

回 到 目 录 最近要从网上抓取数据下来,然后hadoop来做存储和分析.每晚尽量更新 呆毛王赛高 月子酱赛高 小唯酱赛高 目录 安装hadoop1.0.3 HDFS wordcount mapreduce去重 mapreduce算平均分 mapreduce排序 安装hadoop1.0.3 1 ubuntu中安装hadoop 1.0.3 2 ------------伪分布式安装------------- 3 1.安装ssh 4 sudo apt-get install openssh-serve

Java新手学习路线,0基础学习Java怎样效率更高?

Java是老牌编程语言,拥有扎实的群众基础和广阔的市场应用,从业人员薪资也普遍较高.很多人想要加入到Java开发行列,不过0基础学习Java怎样效率更高? 很多0基础学习Java的同学想知道怎样学习效率更高?小编以为,学习Java需要一个系统的过程,而根据你未来的职位方向不同,学习也各有侧重.目前来说,Java就业方向包括Web开发.大数据开发.Android开发以及各种后端服务开发领域,但不论你选择哪一个,都要从最基础的知识点学习. Java基础知识点多且杂,初学者在开始的时候需要认识什么是J

如何从0开始学习java,成为中高级程序员?

如何从0开始学习java,成为中高级程序员? 学习路线:1:java的语法入门学习2:html,js的前端学习3:web开发的学习4:web开发的实战项目学习,电商,图书馆...5:框架的学习,如ssm,ssh6:框架的实战项目学习,如h5的app,前后端结合的社交app7:深入学习框架,springboot,微服务架构,代码生成器等.整个周期下来6个月到一年,对于中等以上IQ的人.通过勤奋,完全可以达到. 原文地址:https://blog.51cto.com/13149944/2471931

HBase-1.0.1学习笔记汇总

欢迎访问:鲁春利的工作笔记,学习是一种信仰,让时间考验坚持的力量. HBase-1.0.1学习笔记(一)集群搭建 http://luchunli.blog.51cto.com/2368057/1682049HBase-1.0.1学习笔记(二)客户端访问 http://luchunli.blog.51cto.com/2368057/1687458 HBase-1.0.1学习笔记(三)启动脚本解析 http://luchunli.blog.51cto.com/2368057/1690619 HBas