增删改查-反射技术通用的方法

package com.sys.dao;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

import javax.persistence.Entity;

import org.hibernate.Query;
import org.hibernate.SessionFactory;

/**
 *@author ddl
 *
 */

public class BaseDaoImpl<T> implements BaseDao<T> {
    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    protected Class<T> clazz;

    public BaseDaoImpl() {
        clazz = (Class<T>) getClass();
        while (clazz != Object.class) {
            Type genType = clazz.getGenericSuperclass();
            if (genType instanceof ParameterizedType) {
                Type args[] = ((ParameterizedType) genType)
                        .getActualTypeArguments();
                if (args[0] instanceof Class) {
                    this.clazz = (Class<T>) args[0];
                    break;
                }
            }
            clazz = (Class<T>) clazz.getSuperclass();
        }
    }

    /**
     * 获取实体类名称
     *
     * @param entityClass
     * @return
     *@author Administrator
     *
     */
    public String getEntityName(Class<T> entityClass) {
        String entityname = entityClass.getSimpleName();
        Entity entity = entityClass.getAnnotation(Entity.class);
        if (entity.name() != null && !"".equals(entity.name())) {
            entityname = entity.name();
        }
        return entityname;

    }

    /**
     * 获取实例
     *
     * @param id
     * @return
     *@author Administrator
     *
     */
    public T find(String id) {
        T entity=null;
        boolean flag = false;
        try {
            entity=(T) sessionFactory.getCurrentSession().get(clazz, id);
            flag = true;
        } catch (Exception e) {
            flag = false;
        }
        return entity;
    }

    /**
     * 增加
     *
     * @param t
     * @return
     *@author Administrator
     *
     */
    public boolean save(T t) {
        boolean flag = false;
        try {
            sessionFactory.getCurrentSession().save(t);
            flag = true;
        } catch (Exception e) {
            flag = false;
        }
        return flag;
    }

    /**
     * @return
     *@author Administrator 修改
     */
    public boolean update(T t) {
        boolean falg = false;
        try {
            sessionFactory.getCurrentSession().update(t);
            falg = true;
        } catch (Exception e) {
            falg = false;
        }
        return falg;
    }

    /**
     * 删除
     */
    public boolean delete(T t) {
        boolean flag = false;
        try {
            sessionFactory.getCurrentSession().delete(t);
            flag = true;
        } catch (Exception e) {
            flag = false;
        }
        return flag;
    }
    /**
     * 批量删除
     */
    public boolean deletes(String[] ids) {
        boolean falg=false;
        T entity=null;
        try {
            for (int i = 0; i < ids.length; i++) {
                entity=this.find(ids[i]);
                sessionFactory.getCurrentSession().delete(entity);
                falg=true;
            }
        } catch (Exception e) {
            falg=false;
        }
        return falg;
    }

    @SuppressWarnings("unchecked")
    public List<T> getAllList(Class<T> entityClass) {
        String entityname=this.getEntityName(entityClass);
        List<T> list=null;
        try {
            String hql="from "+entityname+"";
            System.out.println("hql:"+hql+sessionFactory.getCurrentSession());
            Query query=sessionFactory.getCurrentSession().createQuery(hql);
            list=(List<T>) query.list();
        } catch (Exception e) {
            list=null;
        }
        return list;
    }
}

================[另一种获取clazz方法,没有试验,]===================

public Class loadClass(String className){

    Class clazz=null;

   clazz=Thread.currentThread().getContextClassLoader().loadClass(className);

  if(clazz==null){

  clazz=Class.forName(className);

}

return clazz;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开源的Java框架,它简化了Spring应用程序的开发和部署过程,使开发者能够更快地构建独立且高度可配置的Spring应用程序。在Spring Boot中,我们可以很方便地实现学生信息管理系统,以进行增删改查的操作。 首先,我们可以使用Spring Boot的依赖管理和自动配置特性,快速创建一个基于Spring Boot的Web应用程序。我们可以使用Git来进行版本控制,管理我们的代码。 接着,我们需要定义学生实体类,包括学生的姓名、年龄、性别等属性。通过使用Spring Data JPA,我们可以很方便地进行数据库操作,包括增删改查。 在创建学生信息管理系统的功能模块时,可以使用Spring MVC框架来处理HTTP请求和响应。我们可以定义一个学生信息控制器,包含新增、删除、修改和查询学生信息的接口。 在实现学生信息的新增功能时,我们可以通过POST请求将学生信息传递给后端。后端会将学生信息保存到数据库中。 在实现学生信息的删除功能时,可以通过传递学生ID来删除对应的学生信息。 在实现学生信息的修改功能时,可以通过PUT请求传递新的学生信息和要修改的学生ID。后端会根据ID找到相应的学生信息,然后更新。 在实现学生信息的查询功能时,可以通过GET请求传递查询条件,后端会根据条件查询数据库中的学生信息,并返回给前端。 最后,我们可以使用Git来管理我们的代码。Git是目前最流行的分布式版本控制系统,它可以帮助我们更好地管理和协作开发代码。 通过使用Spring Boot和Git,我们可以快速创建并管理一个学生信息管理系统。这个系统可以方便地实现学生信息的增删改查功能,并且具有版本控制的能力,方便团队合作和代码管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值