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. IOS7 edgesForExtendedLayout

    在iOS 7中,苹果引入了一个新的属性,叫做[UIViewController setEdgesForExtendedLayout:],它的默认值为UIRectEdgeAll.当你的容器是naviga ...

  2. HTML基础(3)

    1.块元素和内嵌元素(block\inline) 块的特征: 独占一行 不设定宽度,宽度将撑满整行 能设置所有样式 内嵌的特征: 默认同行可以继续跟同类型标签 内容撑开宽度 不支持宽高 不支持上下的m ...

  3. 程序设计入门——C语言 第8周编程练习 2GPS数据处理(6分)

    题目内容: NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine ...

  4. mybatis入门_mybatis基本原理以及入门程序

    一.传统jdbc存在的问题 1.创建数据库的连接存在大量的硬编码, 2.执行statement时存在硬编码. 3.频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 4.存在大量的 ...

  5. java内存划分

    运行时数据区域 Java虚拟机在执行Java的过程中会把管理的内存划分为若干个不同的数据区域.这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,而有的区域则依赖线程的启动 ...

  6. iOS开发 点击某处横屏竖屏切换

    typedef NS_ENUM(NSInteger, UIInterfaceOrientation) { UIInterfaceOrientationUnknown            = UIDe ...

  7. offsetwidth/clientwidth的区别

    clientWidth是对象看到的宽度(不含边线,即border)scrollWidth是对象实际内容的宽度(若无padding,那就是边框之间距离,如有padding,就是左padding和右pad ...

  8. match() vs search()

    match() 函数只检查 RE 是否在字符串开始处匹配,而 search() 则是扫描整个字符串.记住这一区别是重要的.记住,match() 只报告一次成功的匹配,它将从 0 处开始:如果匹配不是从 ...

  9. BeautifulSoup学习笔记

    1.如果tag最内层只有一个 NavigableString 类型子节点,那么这个tag可以直接使用tag.string 得到子节点 # encoding=utf-8 from bs4 import ...

  10. 机器学习之决策树熵&信息增量求解算法实现

    此文不对理论做相关阐述,仅涉及代码实现: 1.熵计算公式: P为正例,Q为反例 Entropy(S)   = PLog2(P) - QLog2(Q); 2.信息增量计算: Gain(S,Sv) = E ...