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);
        }
  • 相关阅读:
    c++——类 继承
    Pytorch Tensor, Variable, 自动求导
    Python-OpenCV实现二值图像孔洞填充
    神经网络手写数字识别numpy实现
    神经网络反向传播公式推导
    转:Markdown语法大全
    markdown居中对齐,左对齐,右对齐
    硬编码与软编码
    转:Markdown数学公式语法
    Python if __name__=='__main__'
  • 原文地址:https://www.cnblogs.com/lenve/p/4518000.html
Copyright © 2011-2022 走看看