定义了一个DAO<T>接口
package com.wengde.bookshop1.dao; import java.util.List; public interface DAO<T> { //插入数据,同时获取插入的ID long insert(String sql,Object...args); //执行update操作,包括insert delete update void update(String sqj,Object...args); //返回一个对象 T query(String sql,Object...agrs); //执行多条查询记录,返回一个list List<T> queryForlist(String sql,Object...args); //查询统计信息 <V> V getSingleval(String sql,Object ... args); //批量处理 void batch(String sql,Object[]...args); }
再定义一个实现类(这个类实现DAO类的时候,没有带泛型,其方法就全部是Object类)
package com.wengde.bookshop1.impl; import java.util.List; import com.wengde.bookshop1.dao.DAO; public class DAOIpml implements DAO { @Override public long insert(String sql, Object... args) { // TODO Auto-generated method stub return 0; } @Override public void update(String sqj, Object... args) { // TODO Auto-generated method stub } @Override public Object query(String sql, Object... agrs) { // TODO Auto-generated method stub return null; } @Override public List queryForlist(String sql, Object... args) { // TODO Auto-generated method stub return null; } @Override public Object getSingleval(String sql, Object... args) { // TODO Auto-generated method stub return null; } @Override public void batch(String sql, Object[]... args) { // TODO Auto-generated method stub } }
定义一个DAOImpl(该类实现的DAO<T>带了泛型,则其对应的方法涉及到泛型的就是指定泛型T类型)
package com.wengde.bookshop1.impl; import java.util.List; import com.wengde.bookshop1.dao.DAO; public class DAOIpml implements DAO<T> { @Override public long insert(String sql, Object... args) { // TODO Auto-generated method stub return 0; } @Override public void update(String sqj, Object... args) { // TODO Auto-generated method stub } @Override public T query(String sql, Object... agrs) { // TODO Auto-generated method stub return null; } @Override public List<T> queryForlist(String sql, Object... args) { // TODO Auto-generated method stub return null; } @Override public <V> V getSingleval(String sql, Object... args) { // TODO Auto-generated method stub return null; } @Override public void batch(String sql, Object[]... args) { // TODO Auto-generated method stub } }
总结,由于之前实现接口的时候,忘记带了泛型,所以导致可能会使一些带泛型的方法会出现错误(除非一直用object类)。