• 使用泛型定义一个可重用的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);
        }
  • 相关阅读:
    Chrome下载无后缀问题
    duilib程序HelloWorld
    go的windows下的安装包
    ASP.NET MVC异步上传图片和富文本编辑器的使用详解
    搭建go环境(windows和linux)
    构建离线Go编程指南——gotour
    判定模块加载时是否存在循环依赖
    Winform开发框架之框架演化
    为什么要写技术博
    JTREE使用例子—创建一个客户端界面
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461864.html
Copyright © 2020-2023  润新知