zoukankan      html  css  js  c++  java
  • 使用泛型定义一个可重用的Dao

    dao用来和数据库进行交互,一个项目中,可能有用户表,产品表等等,不可能为每一个表都建立一个dao,使用泛型可以实现通吃。

    UserDao.java

    public class UserDao <T>{
    
        public int add(T t){
            return 0;
        }
        public int delete(int id){
            return 0;
        }
        public int delete(T t){
            return 0;
        }
        public T update(T t){
            return null;
        }
        public T findById(int id){
            return null;
        }
        public List<T> findByConditions(String where){
            return null;
        }
    }

    调用它:

        @Test
        public void test5(){
            UserDao<Person> dao = new UserDao<Person>();
            dao.add(new Person());
            Person result = dao.findById(1);
        }

    如果使用了hibernate框架,则要实现面向接口的编程,那么怎样在接口中定义泛型呢?

    IUserDao.java

    public interface IUserDao <T>{
        public int add(T t);
        public int delete(int id);
        public int delete(T t);
        public T update(T t);
        public T findById(int id);
        public List<T> findByConditions(String where);
    }

    UserDao2.java

    public class UserDao2<T> implements IUserDao<T> {
    
        @Override
        public int add(T t) {
            // TODO Auto-generated method stub
            return 0;
        }
    
        @Override
        public int delete(int id) {
            // TODO Auto-generated method stub
            return 0;
        }
    
        @Override
        public int delete(T t) {
            // TODO Auto-generated method stub
            return 0;
        }
    
        @Override
        public T update(T t) {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public T findById(int id) {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public List<T> findByConditions(String where) {
            // TODO Auto-generated method stub
            return null;
        }
    
    }

    调用方法还是和以前一样:

        @Test
        public void test6(){
            UserDao2<Person> dao = new UserDao2<Person>();
            dao.add(new Person());
            Person result = dao.findById(1);
        }
  • 相关阅读:
    OilPaint(转载/实验)
    UE4 3D artist
    render pipeline about (翻译)
    Python 相对导入 碎碎念
    USF, USH Grammar
    JZ19 顺时针打印矩阵
    JZ49 把字符串转换成整数
    JZ45 扑克牌顺子
    JZ53 表示数值的字符串
    JZ48 不用加减乘除做加法
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461864.html
Copyright © 2011-2022 走看看