BaseDAO(反射泛型)
来源:互联网 发布:全民突击辅助软件 编辑:程序博客网 时间:2024/06/05 14:29
利用baseDAO实现增删查改
public class BaseDao<T>{ // 保存当前运行类的参数化类型中的实际的类型 private Class clazz; // 表名 private String tableName; // 构造函数: 1. 获取当前运行类的参数化类型; 2. 获取参数化类型中实际类型的定义(class) public BaseDao(){ // this 表示当前运行类 (AccountDao/AdminDao) // this.getClass() 当前运行类的字节码(AccountDao.class/AdminDao.class) // this.getClass().getGenericSuperclass(); 当前运行类的父类,即为BaseDao<Account> // 其实就是“参数化类型”, ParameterizedType Type type = this.getClass().getGenericSuperclass(); // 强制转换为“参数化类型” 【BaseDao<Account>】 ParameterizedType pt = (ParameterizedType) type; // 获取参数化类型中,实际类型的定义 【new Type[]{Account.class}】 Type types[] = pt.getActualTypeArguments(); // 获取数据的第一个元素:Accout.class clazz = (Class) types[0]; // 表名 (与类名一样,只要获取类名就可以) tableName = clazz.getSimpleName(); } /** * 主键查询 * @param id 主键值 * @return 返回封装后的对象 */ public T findById(int id){ /* * 1. 知道封装的对象的类型 * 2. 表名【表名与对象名称一样, 且主键都为id】 * * 即, * ---》得到当前运行类继承的父类 BaseDao<Account> * ----》 得到Account.class */ String sql = "select * from " + tableName + " where id=? "; try { return JdbcUtils.getQueryRunner().query(sql, new BeanHandler<T>(clazz), id); } catch (SQLException e) { throw new RuntimeException(e); } } /** * 查询全部 * @return */ public List<T> getAll(){ String sql = "select * from " + tableName ; try { return JdbcUtils.getQueryRunner().query(sql, new BeanListHandler<T>(clazz)); } catch (SQLException e) { throw new RuntimeException(e); } }}
AdminDAO继承BaseDAO
public class AdminDao extends BaseDao<Admin> { // 根据主键查询}
Admin
public class Admin { private int id; private String userName; private String pwd; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "Admin [id=" + id + ", userName=" + userName + ", pwd=" + pwd + "]"; }}
0 0
- BaseDAO(反射泛型)
- SpringMvc+Jdbc泛型反射BaseDao
- BaseDao(反射)
- 利用Java反射机制+泛型重新封装的BaseDao
- basedao 反射
- 泛型的补偿实例--使用泛型反射创建BaseDao
- java泛型详解和反射泛型通用BaseDao实现
- 利用反射实现BaseDao
- 利用反射来设计BaseDao
- 增强版basedao java 反射和映射
- BaseDAO开发及获取泛型的传输数据类型(Class<T>)实例讲解
- BaseDAO
- basedao
- BaseDao
- baseDao
- BaseDao
- BaseDao
- BaseDAO
- useradd:警告:此主目录已经存在 不从 skel 目录里向其中复制任何文件。
- ubuntu自定义桌面左上角“Ubuntu 桌面”
- Scalaz(48)- scalaz-stream: 深入了解-Transducer: Process1-tee-wye
- 微服务架构的理论基础 - 康威定律
- 过滤器
- BaseDAO(反射泛型)
- gitbook安装与使用
- MyEclipse2015+JDK1.8开发Android报错Unsupported major.minor version 52.0
- 20160710
- JSTL中类似if else的标签使用例子
- ActionBar
- 【9304】骨牌铺法
- 04使用harbor配置私仓
- C#里的Math方法