JAVA 泛型BaseDao<T> BaseService <T>

来源:互联网 发布:mac免费软件推荐 编辑:程序博客网 时间:2024/06/05 16:47

model 层

package com.maomao.model;import java.io.Serializable;public class User implements Serializable{/** *  */private static final long serialVersionUID = 1L;private Long id;private String name;private String age;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}}

package com.maomao.model;import java.io.Serializable;public class Student implements Serializable{/** *  */private static final long serialVersionUID = 1L;private Long id;private String name;private String age;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}}

BaseDao

package com.maomao.dao;import java.io.Serializable;import java.util.List;public interface BaseDao<T> {void add(T o);void del(Class<T> c, Serializable id);List<T> findAll();public T getById(Serializable id);public void update(T o);}

BaseDaoImpl

package com.maomao.dao.impl;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.util.List;import com.maomao.dao.BaseDao;public class BaseDaoImpl<T> implements BaseDao<T>{@Overridepublic void add(T o) {System.out.println(o.getClass().getName()+":保存方法");}@Overridepublic void del(Class<T> c, Serializable id) {System.out.println(c.getClass().getName()+",id="+id+","+":删除方法");}@Overridepublic List<T> findAll() {Class<T> clazz = (Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];System.out.println(clazz.getName()+":查询所有方法");return null;}@Overridepublic T getById(Serializable id) {Class<T> clazz = (Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];System.out.println(clazz.getName()+",id="+id+","+":根据主键ID查询方法");return null;}@Overridepublic void update(T o) {System.out.println(o.getClass().getName()+":修改方法");}}

BaseService

package com.maomao.service;import java.io.Serializable;import java.util.List;public interface BaseService<T> {void add(T o);void del(Serializable id);List<T> findAll();public T getById(Serializable id);public void update(T o);}

BaseServiceImpl


package com.maomao.service.impl;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.util.List;import com.maomao.dao.BaseDao;import com.maomao.dao.impl.BaseDaoImpl;import com.maomao.service.BaseService;public class BaseServiceImpl<T> implements BaseService<T> {private BaseDao<T> baseDao = new BaseDaoImpl();@Overridepublic void add(T o) {baseDao.add(o);}@Overridepublic void del(Serializable id) {Class<T> clazz = (Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];baseDao.del(clazz, id);}@Overridepublic List<T> findAll() {baseDao.findAll();return null;}@Overridepublic T getById(Serializable id) {baseDao.getById(id);return null;}@Overridepublic void update(T o) {baseDao.update(o);}}

UserService

package com.maomao.service;import com.maomao.model.User;public interface UserService extends BaseService<User>{}

UserServiceImpl

package com.maomao.service.impl;import com.maomao.model.User;import com.maomao.service.UserService;public class UserServiceImpl  extends BaseServiceImpl<User> implements UserService {}

StudentService

package com.maomao.service;import com.maomao.model.Student;public interface StudentService extends BaseService<Student>{}

StudentServiceImpl

package com.maomao.service.impl;import com.maomao.model.Student;import com.maomao.service.StudentService;public class StudentServiceImpl extends BaseServiceImpl<Student> implementsStudentService {}

TestDemo

package com.maomao.test;import org.junit.Test;import com.maomao.model.Student;import com.maomao.model.User;import com.maomao.service.StudentService;import com.maomao.service.UserService;import com.maomao.service.impl.StudentServiceImpl;import com.maomao.service.impl.UserServiceImpl;public class TestDemo {@Testpublic void test1(){UserService userService = new UserServiceImpl();User u = new User();userService.add(u);Student student = new Student();StudentService studentService = new StudentServiceImpl();studentService.add(student);}}


0 1