1、com.atguigu.generic.BaseDao.java
package com.atguigu.generic; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 泛型在DAO中的应用 * @author LiPiaoShui */ public class BaseDao<T> { //存储数据的Map private Map<String,T> map = new HashMap<String,T>(); /** * 添加信息 */ public void save(String id,T t) { map.put(id, t); } /** * 删除信息 */ public void delete(String id) { map.remove(id); } /** * 修改信息 */ public void update(String id, T t) { map.put(id, t); } /** * 获取信息 */ public T get(String id) { return map.get(id); } /** * 获取全部信息 */ public List<T> getAll() { List<T> list = new ArrayList<T>(); for(String key:map.keySet()) { list.add(map.get(key)); } return list; } }
2、com.atguigu.generic.Employee.java
package com.atguigu.generic; /** * 雇员信息 * @author LiPiaoShui */ public class Employee { private int id; private String name; private int age; public Employee() { super(); } public Employee(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Employee [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
3、com.atguigu.generic.EmployeeDao.java
package com.atguigu.generic; /** * 雇员信息操作DAO * @author LiPiaoShui */ public class EmployeeDao extends BaseDao<Employee> { }
4、测试用例
//7.泛型在DAO中的应用 @Test public void test7() { //创建雇员信息 Employee emp1 = new Employee(1,"张三", 30); Employee emp2 = new Employee(2,"李四", 40); Employee emp3 = new Employee(3,"王五", 50); //创建EmployeeDao EmployeeDao empDao = new EmployeeDao(); //添加雇员信息 empDao.save("1001", emp1); empDao.save("1002", emp2); empDao.save("1003", emp3); //查看雇员信息 Employee emp = empDao.get("1002"); //输出:Employee [id=2, name=李四, age=40] System.out.println(emp); //查看全部雇员信息 List<Employee> empList = empDao.getAll(); for(Employee e:empList) { //输出:Employee [id=3, name=王五, age=50] // Employee [id=1, name=张三, age=30] // Employee [id=2, name=李四, age=40] System.out.println(e); } //修改雇员信息 emp2.setName("李四AAA"); empDao.update("1002", emp2); //删除雇员信息 empDao.delete("1001"); //查看全部雇员信息 List<Employee> empList2 = empDao.getAll(); for(Employee e:empList2) { //输出:Employee [id=3, name=王五, age=50] // Employee [id=2, name=李四AAA, age=40] System.out.println(e); } }
相关推荐
dao接口 : PersonDAO extends GenericDao, Integer> 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 findByNameExact()方法 子类的附加方法。 泛型daoimpl :GenericDaoImpl, ID extends ...
在Java编程语言中,泛型和反射是两个非常重要的...这种设计模式在实际开发中非常常见,尤其是在企业级应用中,能够有效地降低代码重复,提高开发效率。同时,通过接口定义,使得不同DAO之间的交互变得更加简单和规范。
【泛型DAO】是一种在Java开发中常见的设计模式,它利用了Java泛型特性来提高代码的可重用性和类型安全性。在Java中,DAO(Data Access Object)模式是用来封装对数据库的操作,将业务逻辑与数据访问逻辑分离,使得...
### 泛型DAO层在SSH框架中的应用与详解 #### 引言 在现代软件开发中,特别是基于Java的企业级应用开发中,DAO(Data Access Object)层的设计扮演着至关重要的角色。它作为业务逻辑层与数据持久层之间的桥梁,承担...
泛型DAO模式在Java Web开发中的应用 摘要: 泛型DAO模式是Java Web开发中的一种重要模式,它可以提高数据访问代码的类型安全性和可读性。该模式可以与Struts、Spring和JPA框架集成,实现用户管理系统的开发。通过...
3. 代码重用性高:泛型Dao接口可以在不同的项目中重用,减少代码冗余。 Hibernate对泛型Dao接口的实现: Hibernate 是一个流行的持久层框架,可以与泛型Dao接口集成,实现数据访问的持久化。 Hibernate 对泛型Dao...
在实体DAO类中,我们可以扩展泛型DAO基类,从而自动拥有基类的数据操作功能。例如,在`ForumHibernateDao2`类中,我们继承自`HibernateBaseDao<Forum>`,并实现了`ForumDao`接口。然后,我们可以提供特殊的功能,...
而泛型DAO是一个类型安全的,代码精简的设计模式(相对于传统DAO),尤其在DAO组件数量庞大的时候,代码量的减少更加明显。 泛型DAO的核心是定义一个GenericDao接口,声明基本的CRUD操作: 用hibernate作为持久化...
【标题】"Hibernate泛型Dao"是针对Java开发中的数据持久化框架Hibernate的一个高级应用,主要目的是为了提高代码的复用性和简洁性。在传统的Hibernate使用中,针对每个实体类,我们都需要创建一个对应的Dao(Data ...
在这个主题中,我们将深入探讨"ssh通用泛型DAO"的相关知识点。 首先,我们来了解"BaseHibernateDAO"。BaseHibernateDAO是基于Hibernate框架的一个基类,它封装了常见的数据库操作,如增删查改(CRUD)。通过继承这...
* DAO设计模式:泛型可以用于DAO设计模式中,例如BaseHibernateEntityDao等。 * 工具类:泛型可以用于工具类中,例如工具类的静态方法可以使用泛型。 五、结论 泛型是Java编程语言中的一种重要特性,它可以提高...
在泛型DAO中,反射主要用于在运行时动态获取数据实体的属性,以便进行CRUD操作。例如,通过反射可以找到实体类的`id`字段,并根据这个字段执行SQL查询。 `MyTestDao`可能是实现泛型DAO的一个具体示例,它可能包含了...
6. **泛型Dao**:在Java开发中,泛型Dao(Generic Dao)是一种设计模式,用于减少重复的数据库操作代码。通过定义一个通用的Dao接口,可以实现对不同类型的实体对象进行CRUD操作,提高了代码的复用性和可维护性。...
以HibernateTemplate为例,我们可以这样实现泛型DAO: ```java public abstract class HibernateGenericDao<T> implements GenericDao<T> { private SessionFactory sessionFactory; public ...
DAO对象一般都包括CRUD动作,如果在一个应用中,大量的重复定义这些CRUD方法,会占用大量的开发时间及测试时间,那在这一方面,有没有改进的方法呢? 其实,利用Java面向对象的基本特性及JDK5新引入的泛型语法,我们...
总的来说,泛型DAO在Java Web程序中的应用,不仅可以提高代码的质量,降低出错的可能性,还能让开发者更专注于业务逻辑,而非重复的数据库操作代码。它是现代企业级应用开发中不可或缺的一部分,提升了开发效率和...
本文将深入探讨`JdbcTemplate`通用泛型Dao实现的相关知识点,帮助开发者更好地理解和应用这一技术。 首先,让我们了解什么是`JdbcTemplate`。它是Spring框架的一部分,用于处理SQL操作。`JdbcTemplate`提供了一组...
在`我设计的泛型DAO.jpg`中,可能展示了这个设计的类图或者代码结构,进一步解释了各个组件如何协作以实现泛型DAO的功能。 总之,这种设计模式充分利用了Spring的注解驱动和Hibernate的ORM能力,降低了代码的复杂性...