基于JavaWeb的学生成绩管理系统
程序员文章站
2022-05-06 18:05:08
...
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projections;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.bjpowernode.common.dao.BaseDao;
@Repository("baseDao")
public class BaseDaoImpl implements BaseDao {
private Logger logger = Logger.getLogger(this.getClass());
@Autowired
private SessionFactory sessionFactory;
public Session getSession() {
// 事务必须是开启的(Required),否则获取不到
return sessionFactory.getCurrentSession();
}
@Override
public <T> void saveOrUpdate(T entity){
try{
this.getSession().saveOrUpdate(entity);
this.getSession().flush();
}catch(RuntimeException e){
logger.error("保存或更新实体异常",e);
throw e;
}
}
@SuppressWarnings("unchecked")
@Override
public <T> T get(Class<T> entityClass, String id) {
return (T) this.getSession().get(entityClass, id);
}
@Override
public int getRowCountByDetachedCriteria(DetachedCriteria condition) {
Criteria criteria = condition.getExecutableCriteria(this.getSession());
Long totalCount = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult();
return totalCount == null ? 0 : totalCount.intValue();
}
@SuppressWarnings("unchecked")
@Override
public <T> List<T> findByDetachedCriteria(DetachedCriteria condition, int page, int rows) {
Criteria criteria = condition.getExecutableCriteria(this.getSession());
criteria.setFirstResult((page - 1) * rows).setMaxResults(rows);
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return criteria.list();
}
@Override
public <T> void save(T entity) {
try{
this.getSession().save(entity);
this.getSession().flush();
}catch(RuntimeException e){
logger.error("保存实体异常",e);
throw e;
}
}
@Override
public <T> void update(T entity){
try{
this.getSession().update(entity);
this.getSession().flush();
}catch(RuntimeException e){
logger.error("更新实体异常",e);
throw e;
}
}
@Override
public <T> void delete(T entity) {
try{
this.getSession().delete(entity);
this.getSession().flush();
}catch(RuntimeException e){
logger.error("删除实体异常",e);
throw e;
}
}
}
推荐阅读
-
基于thinkphp的cms内容管理系统有哪些?该如何解决
-
【课程分享】基于plusgantt的项目管理系统实战开发(Spring3+JDBC
-
毕业设计——>基于JAVA + JSP + Servlet + Mysql的 留言板前台 和 后台管理系统
-
学生成绩管理系统(Python学习)
-
20个基于PHP的开源内容管理系统推荐
-
dwz - 开发一个基于PHP 的后台管理系统,相当于一个招生系统的界面,有什么推荐的吗?
-
PHP《个人管理系统》之完善登录模块 php用户管理系统 php学生管理系统 php成绩管理系
-
基于thinkphp的cms内容管理系统有哪些?该如何解决
-
基于Python实现一个简易的数据管理系统
-
【学生信息管理系统】系统的界面与后台