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);
        }
  • 相关阅读:
    Linux文件/proc/net/tcp分析
    为什么系统调用会消耗较多资源
    为什么Linux默认页大小是4KB
    为什么Linux需要虚拟内存
    Make 命令教程
    关于同步的一点思考-下
    关于同步的一点思考-上
    Linux下的进程控制块(PCB)
    汇编语言基础:寄存器和系统调用
    内核栈与thread_info结构详解
  • 原文地址:https://www.cnblogs.com/lenve/p/4518000.html
Copyright © 2011-2022 走看看