package cn.lk.newsssh.dao;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
@SuppressWarnings("all")
public class BaseDao<T> {//泛型
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
//获取当前上下文一个session对象,当第一次使用此方法时,会自动产生一个session对象,并且连续使用多次时,得到的session都是同一个对象
private Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}
/////////////增///////////////////////////////////////////////////////
/**
* 保存一个对象
*
* @param o
* @return
*/
public Serializable save(T o) {
return this.getCurrentSession().save(o);
}
/////////////删///////////////////////////////////////////////////////
/**
* 删除一个对象
*
* @param o
*/
public void delete(T o) {
this.getCurrentSession().delete(o);
}
/////////////改///////////////////////////////////////////////////////
/**
* 更新一个对象
*
* @param o
*/
public void update(T o) {
this.getCurrentSession().update(o);
//this.getCurrentSession().merge(o);
}
/**
* 保存或更新对象
*
* @param o
*/
public void saveOrUpdate(T o) {
this.getCurrentSession().saveOrUpdate(o);
}
/////////////查:若干对象、单个对象、记录数///////////////////////////////////////////////////////
/**
* 查询
*
* @param hql
* @return
*/
public List<T> find(String hql) {
return this.getCurrentSession().createQuery(hql).list();
}
/**
* 查询集合
*
* @param hql
* @param param
* @return
*/
public List<T> find(String hql, Object[] param) {
Query q = this.getCurrentSession().createQuery(hql);
if (param != null && param.length > 0) {
for (int i = 0; i < param.length; i++) {
q.setParameter(i, param[i]);
}
}
return q.list();
}
/**
* 查询集合
*
* @param hql
* @param param
* @return
*/
public List<T> find(String hql, List<Object> param) {
Query q = this.getCurrentSession().createQuery(hql);
if (param != null && param.size() > 0) {
for (int i = 0; i < param.size(); i++) {
q.setParameter(i, param.get(i));
}
}
return q.list();
}
/**
* 查询集合(带分页)
*
* @param hql
* @param param
* @param page
* 查询第几页
* @param rows
* 每页显示几条记录
* @return
*/
public List<T> find(String hql, Object[] param, Integer page, Integer rows) {
if (page == null || page < 1) {
page = 1;
}
if (rows == null || rows < 1) {
rows = 10;
}
Query q = this.getCurrentSession().createQuery(hql);
if (param != null && param.length > 0) {
for (int i = 0; i < param.length; i++) {
q.setParameter(i, param[i]);
}
}
return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();
}
/**
* 查询集合(带分页)
*
* @param hql
* @param param
* @param page
* @param rows
* @return
*/
public List<T> find(String hql, List<Object> param, Integer page, Integer rows) {
if (page == null || page < 1) {
page = 1;
}
if (rows == null || rows < 1) {
rows = 10;
}
Query q = this.getCurrentSession().createQuery(hql);
if (param != null && param.size() > 0) {
for (int i = 0; i < param.size(); i++) {
q.setParameter(i, param.get(i));
}
}
return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();
}
/**
* 获得一个对象
*
* @param c
* 对象类型
* @param id
* @return Object
*/
public T get(Class<T> c, Serializable id) {
return (T) this.getCurrentSession().get(c, id);
}
/**
* 获得一个对象
*
* @param hql
* @param param
* @return Object
*/
public T get(String hql, Object[] param) {
List<T> l = this.find(hql, param);
if (l != null && l.size() > 0) {
return l.get(0);
} else {
return null;
}
}
/**
* 获得一个对象
*
* @param hql
* @param param
* @return
*/
public T get(String hql, List<Object> param) {
List<T> l = this.find(hql, param);
if (l != null && l.size() > 0) {
return l.get(0);
} else {
return null;
}
}
/**
* select count(*) from 类
*
* @param hql
* @return
*/
//当查询的数据条数大于1的时候使用uniqueResult()方法就会出现异常:
//org.hibernate.NonUniqueResultException: query did not return a unique result
public Long count(String hql) {
try{
return (Long) this.getCurrentSession().createQuery(hql).uniqueResult();
}catch(Exception e){
e.printStackTrace();
return 0L;
}
}
/**
* select count(*) from 类
*
* @param hql
* @param param
* @return
*/
public Long count(String hql, Object[] param) {
Query q = this.getCurrentSession().createQuery(hql);
if (param != null && param.length > 0) {
for (int i = 0; i < param.length; i++) {
q.setParameter(i, param[i]);
}
}
return (Long) q.uniqueResult();
}
/**
* select count(*) from 类
*
* @param hql
* @param param
* @return
*/
public Long count(String hql, List<Object> param) {
Query q = this.getCurrentSession().createQuery(hql);
if (param != null && param.size() > 0) {
for (int i = 0; i < param.size(); i++) {
q.setParameter(i, param.get(i));
}
}
return (Long) q.uniqueResult();
}
/////////////特殊hql语句的执行///////////////////////////////////////////////////////
/**
* 执行HQL语句
*
* @param hql
* @return 响应数目
*/
public Integer executeHql(String hql) {
return this.getCurrentSession().createQuery(hql).executeUpdate();
}
/**
* 执行HQL语句
*
* @param hql
* @param param
* @return 响应数目
*/
public Integer executeHql(String hql, Object[] param) {
Query q = this.getCurrentSession().createQuery(hql);
if (param != null && param.length > 0) {
for (int i = 0; i < param.length; i++) {
q.setParameter(i, param[i]);
}
}
return q.executeUpdate();
}
/**
* 执行HQL语句
*
* @param hql
* @param param
* @return
*/
public Integer executeHql(String
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于JAVAEE新闻管理系统(含数据库文件EasyUi+MySql+SSH).zip 大学生课程设计 基于javaee的课程设计 自己大二写的课程设计
资源推荐
资源详情
资源评论
收起资源包目录
基于JAVAEE新闻管理系统(含数据库文件EasyUi+MySql+SSH).zip (1173个子文件)
BaseDao.class 7KB
NewsAct.class 5KB
UploadAct.class 5KB
MenuAct.class 3KB
LoginFilter.class 3KB
NewsService.class 3KB
UserAct.class 3KB
MyUtils.class 3KB
EasyUITree.class 2KB
News.class 2KB
Cmenu.class 2KB
MyStrutsFilter.class 2KB
User.class 2KB
UserService.class 1KB
GsonUtils.class 1KB
MenuService.class 961B
.classpath 1008B
org.eclipse.wst.common.component 472B
org.eclipse.wst.jsdt.ui.superType.container 49B
bootstrap.css 144KB
bootstrap.css 143KB
bootstrap.min.css 141KB
bootstrap.css 138KB
bootstrap.css 128KB
bootstrap.min.css 122KB
bootstrap.min.css 115KB
easyui.css 66KB
easyui.css 65KB
easyui.css 65KB
easyui.css 65KB
easyui.css 63KB
easyui.css 62KB
qncount.css 44KB
bootstrap-grid.css 43KB
ueditor.css 43KB
font-awesome.css 37KB
ueditor.min.css 34KB
bootstrap-grid.min.css 33KB
loginjj.css 31KB
font-awesome.min.css 30KB
font-awesome.css 28KB
bootstrap-theme.css 26KB
font-awesome.min.css 23KB
bootstrap-theme.min.css 23KB
bootstrap-theme.css 22KB
video-js.css 21KB
bootstrap-theme.min.css 19KB
image.css 18KB
fanstyle.css 15KB
video.css 15KB
attachment.css 14KB
style.css 13KB
bootstrap-datetimepicker.css 12KB
video-js.min.css 11KB
bootstrap-datetimepicker.min.css 11KB
tabs.css 9KB
tabs.css 9KB
tabs.css 9KB
tabs.css 9KB
css3filter.css 8KB
login1.css 7KB
tabs.css 7KB
tabs.css 7KB
shCoreDefault.css 7KB
mobile.css 7KB
kcbar.css 7KB
assess.css 6KB
zTreeStyle.css 6KB
zTreeStyle.css 6KB
color.css 6KB
datagrid.css 6KB
datagrid.css 6KB
datagrid.css 6KB
panel.css 6KB
panel.css 6KB
panel.css 6KB
datagrid.css 6KB
panel.css 5KB
datagrid.css 5KB
datagrid.css 5KB
panel.css 5KB
panel.css 5KB
cplogin.css 5KB
bootstrap-reboot.css 5KB
reslist.css 5KB
icon.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
window.css 4KB
window.css 4KB
window.css 4KB
window.css 4KB
bootstrap-reboot.min.css 4KB
fcrelogin.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
共 1173 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
我慢慢地也过来了
- 粉丝: 5783
- 资源: 3710
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页