简易版的Spring的JdbcTemplate的小示例,就是个意思,表达下泛型方法的写法
import java.lang.reflect.*;
import java.util.*;
class Person {
String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//包含一个带参的构造器和一个不带参的构造器
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
}
public String toString(){
return "{ name:"+name+", age:"+age+" }";
}
}
/**
* 模仿Spring的JdbcTemplate的简易版本
*/
class JdbcTemplateSimple {
/*
* 这里map的v用的是Object,如果单单从暴漏的api get() 和 save() 方法来看,不会有问题
* 因为保存save()时存入的一定是T, get()取出时也一定是T
* 但是如果通过反射,获得这个字段,并存入任意对象时,此字段就变得有风险
*/
private static Map<Integer,Object> maps = new HashMap<>();
public static <T> T get(Integer id){ //获取对象
return (T)maps.get(id);
}
public static <T> void save(Integer index, T entity){ //保存对象
maps.put(index,entity);
}
}
//测试
public class Test
{
public static void main(String[] args) throws Exception{
Person person = new Person("dwei",15);
JdbcTemplateSimple.save(1,person); //保存一个实体对象person
Person result = JdbcTemplateSimple.get(1); //获取一个实体对象person 不用类型强转哦!
System.out.println(result);
}
}