BaseDao

package wl.oa.dao.base;

public interface BaseDao<T>{
public void saveEntry(T t);
}

BaseDaoImpl

package wl.oa.dao.base.impl;

import java.lang.reflect.ParameterizedType;

import javax.annotation.Resource;

import org.springframework.orm.hibernate3.HibernateTemplate;

import wl.oa.dao.base.BaseDao;

public class BaseDaoImpl<T> implements BaseDao<T>{

    @Resource(name="hibernateTemplate")
private HibernateTemplate hibernateTemplate;
public void saveEntry(T t) {
// TODO Auto-generated method stub
this.hibernateTemplate.save(t);
} }

BaseService

package wl.oa.service.base;

public interface BaseService<T> {

      public void saveEntry(T t);

}

BaseServiceImpl

package wl.oa.service.base.impl;

import javax.annotation.Resource;

import org.springframework.transaction.annotation.Transactional;

import wl.oa.dao.base.BaseDao;
import wl.oa.service.base.BaseService; public class BaseServiceImpl<T> implements BaseService<T>{ @Resource//(别加 name属性)
private BaseDao baseDao;
@Transactional(readOnly=false)
public void saveEntry(T t) {
// TODO Auto-generated method stub
this.baseDao.saveEntry(t);
} }

Test

package wl.oa.test;

import org.junit.Test;

import wl.oa.dao.PersonDao;
import wl.oa.domain.Person;
import wl.oa.service.PersonService; public class PersonTest extends BaseSpring{ @Test
public void testsavePerson(){ PersonService personService=(PersonService) context.getBean("personService");
Person person=new Person();
person.setPname("莽子");
personService.saveEntry(person);
}
@Test
public void testHibernateTemplate(){
PersonDao personDao = (PersonDao)context.getBean("personDao");
Person person=new Person();
person.setPname("莽子1");
personDao.saveEntry(person);
} }

jinut 测试 ok

获得真是类型

private Class classt;
/**
* 1、在父类中要执行一段代码,这个代码的执行时间为子类创建对象的时候,这段代 码已经执行完了,根据这个需求,有两种方案供选择
* * 利用static语句块
* * 利用父类的构造函数
* 2、分析:
* 因为得到ParameterizedType需要用到this关键字,而this关键字不能出现在 static语句块中
* 所以只能选择父类的构造器
*/
public BaseDaoImpl(){
/**
* ParameterizedType就是泛型
*/
ParameterizedType type = (ParameterizedType)this.getClass ().getGenericSuperclass();
this.classt = (Class)type.getActualTypeArguments()[0];//<T>
System.out.println(type.getRawType());
}

ssh base 写法的更多相关文章

  1. ssh 注解写法

    弄了半天  (好久哦) 首先 applicationContext-db.xml <?xml version="1.0" encoding="UTF-8" ...

  2. 使用ssh tunnel 来做代理或跳板

    接前文 http://www.cnblogs.com/piperck/p/6188984.html  使用ssh config配置文件来管理ssh连接 前文说了如何配置自己的ssh config 来方 ...

  3. Git配置非22端口,解决:ssh: connect to host xxx port 22: Connection timed out fatal: The remote end hung up unexpectedly

    背景:私自搭建了Git服务器,而Git本身就是SSH进行连接的,而Git命令上默认只能通过22端口实现. 解决方法: 第一种: 在系统的用户目录下的文件夹:.ssh 如果该路径下没有config文件, ...

  4. R语言数据处理利器——dplyr简介

    dplyr是由Hadley Wickham主持开发和维护的一个主要针对数据框快速计算.整合的函数包,同时提供一些常用函数的高速写法以及几个开源数据库的连接.此包是plyr包的深化功能包,其名字中的字母 ...

  5. OpenNebula学习第四节之磁盘镜像的制作

    一.准备工作 需要准备一个Ubuntu16.04的ISO文件上传至服务器,如下图所示 二.操作步骤 2.1:创建操作目录 创建一个/var/tmp/cloud_image目录,把Ubuntu16.04 ...

  6. Spring---SSH整合(二)

    基于Spring---SSH整合,使用SSH编写后台: User模块层 TreeNode.hbm.xml <?xml version="1.0" encoding=" ...

  7. Spring+Struts2+Hibernate框架搭建

    SSH框架版本:Struts-2.3.30  +  Spring-4.2.2  +  Hibernate5.2.2 下图是所需要的Jar包: 下面是项目的结构图: 1.web.xml <?xml ...

  8. Git: 搭建一个本地私人仓库

    Git: 搭建一个本地私人仓库 寝室放个电脑.实验室也有个电脑 为进行数据同步,充分利用实验室的服务器搭建了个本地私人仓库 1. 安装流程 当然首先保证服务器上与PC机上都已经安装了可用的Git 在P ...

  9. SSH配置文件和SSM配置文件的写法

    一.SSH配置文件的写法(XML版本) <util:properties id="jdbc" location="classpath:db.properties&q ...

随机推荐

  1. Spark在Hadoop集群上的配置(spark-1.1.0-bin-hadoop2.4)

    运行Spark服务,需要在每个节点上部署Spark. 可以先从主节点上将配置修改好,然后把Spark直接scp到其他目录. 关键配置 修改conf/spark-env.sh文件: export JAV ...

  2. 关于Struts、hibernate、spring三大框架详解。

    struts 控制用的 hibernate 操作数据库的 spring 用解耦的 Struts . spring . Hibernate 在各层的作用 1 ) struts 负责 web 层 . Ac ...

  3. RecyclerView 制作瀑布流图片

    这是瀑布流的效果图 RecyclerView(ListView的升级版) 加载图片用的是第三方图片加载框架 ------------------------------------- 在Xml中 &l ...

  4. iOS - AppRealTest App 真机测试

    前言 1.准备 开发者账号 自从 Xcode7 出来之后,一般的真机测试不需要开发者账号,也就不需要看这篇教程,只有 app 具有 "推送" 等功能的时候,要真机测试就必须要开发者 ...

  5. (十三)Packet socket 和 sockaddr_ll

    描述        本文简单描述了数据链路层的socket使用的两种方法正文     Linux下有两种方式接收数据链路层的数据包:    (1)原始的方法,即创建一个类型为SOCK_PACKET的s ...

  6. cookie记录用户名

    在说如何用cookie记录用户名之前,我们先来说说cookie的工作原理: cookie : 存储数据,当用户访问了某个网站(网页)的时候,我们就可以通过cookie来像访问者电脑上存储数据 ; 1. ...

  7. 使用Memcache缓存mysql数据库操作的原理和缓存过程浅析

    转载自脚本之家 http://www.jb51.net/article/51831.htm  作者:忙碌的松鼠 对于大型网站如facebook,ebay等网站,如果没有Memcache做为中间缓存层, ...

  8. &nbsp;空格用法

    记录一下,空格的转义字符分为如下几种:平时一般用的是 1.  &160#;不断行的空白(1个字符宽度)2.  &8194#;半个空白(1个字符宽度)3.  &8195#;一个空 ...

  9. MySQL之存储引擎MyISAM/InnoDB高并发优化经验

    https://www.centos.bz/2011/09/mysql-myisam-innodb-optimization-experience/

  10. 采购信息记录修改[BDC]

    *&---------------------------------------------------------------------* *& *&---------- ...