SSh开发,封装dao
2016-05-07 13:18
357 查看
手动写一个dao查询类,所有的子类 如UserDao继承这个dao。
核心代码是通过反射获取泛型对象指定的具体类,BaseDao()下的这几行代码,要理解;
UserDao代码如下:
这里的@Named 是注解实现,看下一步
这里是UserService,是user服务类,通过注入的方式来使用UserDao
核心代码是通过反射获取泛型对象指定的具体类,BaseDao()下的这几行代码,要理解;
public class BaseDao<T, PK extends Serializable> { @Inject private SessionFactory sessionFactory; private Class<?> clazz; public static void main(String[] args) { new UserDao().getSession(); } public BaseDao() { // 通过反射获取泛型的真实的类 ParameterizedType parameterizedType = (ParameterizedType) this .getClass().getGenericSuperclass(); Type[] types = parameterizedType.getActualTypeArguments(); clazz = (Class<?>) types[0]; } public Session getSession() { return sessionFactory.getCurrentSession(); } public void save(T t) { getSession().saveOrUpdate(t); } @SuppressWarnings("unchecked") public T get(PK id) { return (T) getSession().get(clazz, id); } public void del(PK id) { getSession().delete(get(id)); } public void del(T t) { getSession().delete(t); } @SuppressWarnings("unchecked") public List<T> findAll() { return getCriteria().list(); } @SuppressWarnings("unchecked") public T findByProperty(String propertyName, Object value) { Criteria c = getCriteria(); c.add(Restrictions.eq(propertyName, value)); return (T) c.uniqueResult(); } private Criteria getCriteria() { return getSession().createCriteria(clazz); } }
UserDao代码如下:
@Named public class UserDao extends BaseDao<UserInfo, Integer> { }
这里的@Named 是注解实现,看下一步
这里是UserService,是user服务类,通过注入的方式来使用UserDao
@Named @Transactional public class UserService { @Inject private UserDao userDao; public void save(UserInfo user) throws Exception { userDao.save(user); } public UserInfo findByName(String name) { return userDao.findByProperty("username", name); } @Transactional(readOnly = true) public List<UserInfo> findAll() { return userDao.findAll(); } }
相关文章推荐
- Linux Generating SSH Keys
- perl脚本实现限制ssh最大登录次数(支持白名单)
- rsync ssh 数据同步分析
- 搭建SSH时的思考和遇到的几个问题的解决方法
- SSH 使用原理 与解释
- SSH整合中 hibernate托管给Spring得到SessionFactory
- Linux VPS利用SSH重置ROOT密码的方法
- ssh,scp自动登陆的实现方法
- linux下使用ssh远程执行命令批量导出数据库到本地
- shell脚本实现ssh自动登录功能分享
- linux下ssh安装与scp命令使用详解
- ssh项目环境搭建步骤(web项目)
- 脚本实现SSH登录邮件报警
- Linux SSH 安全策略 限制 IP 登录方法
- 解决SSH连接超时的2个配置方法
- 用shell脚本防ssh和vsftpd暴力破解的详解讲解
- 内网ssh/mysql登录缓慢的解决方法
- Java实现SSH模式加密
- Linux sshd_config配置手册中文版