package com.dreamoa.sys;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import com.dreamoa.util.HibernateSessionFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
*此类主要是提供一些常用的方法使用,用来被业务类业务类
*/
public class BaseDAO<T> {
private static Log log = LogFactory.getLog(BaseDAO.class);
private Session session = null;
private Class<T> entityClass;// 通过反射机制获取泛型对应的实体类的类型
private Transaction tx = null;
public BaseDAO() {
Type genType = getClass().getGenericSuperclass();
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
entityClass = (Class) params[0];
}
/**
* 创建会话session
*/
public void currentSession() {
this.session = HibernateSessionFactory.getSession();
}
/**
* 关闭session
*/
public void closeSession() {
HibernateSessionFactory.closeSession();
}
/**
* 提交事务
*/
public void commit() {
this.tx.commit();
closeSession();
}
/**
* 开启事务
*/
public void beginTransaction() {
currentSession();
tx = this.session.beginTransaction();
}
/**
* 回滚事务
*/
public void rollback(){
tx.rollback();
}
/**
* 密码加密
*/
public static String encrypt(String str) {
return Base64.byteArrayToBase64(str.getBytes());
}
/**
* 密码解密
*/
public static String decrypt(String s) {
return new String(Base64.base64ToByteArray(s));
}
/**
* 持久化一个对象
* @param obj
*/
public void save(Object obj) {
session.save(obj);
}
/**
* 更新一个对象
* @param obj
*/
public void update(Object obj) {
session.update(obj);
}
/**
* 根据主键id删除一个对象
* @param clazz
* @param idName,主键名称
* @param id,实际值
*/
public void deleteById(String idName, Serializable id) {
String className = entityClass.getSimpleName();
String hql = "delete from " + className + " where " + idName + "=?";
Query query = session.createQuery(hql);
query.setParameter(0, id);
query.executeUpdate();
}
/**
* 根据主键id查询对象
*
* @param id
* @return
*/
public T get(Serializable id) {
return (T) session.get(entityClass, id);
}
}
分享到:
相关推荐
springboot+mybatis 多数据源 basedao +分页 basedao做的不好,你们可以改进
NC65通过BaseDAO操作数据库,包含接口类及接口实现类: /** * 获取baseDAO * @return */ public BaseDAO getBaseDAO() { if(baseDAO == null){ baseDAO = new BaseDAO(); } return baseDAO; } public ...
可以将从数据库中查到的数据直接封到实体类!!!基于反射和元数据
手动实现BaseDao 自动写数据库操作
hibernate的BaseDAO源代码
基于hibernate的baseDao,注释很详细,方便实用
这个是一个公共的basedao类。需要使用的话直接复制。内容看看就明白了
易于数据库代码的维护和修改,方便团队的合作
mybatis basedao 是一款封装了基本增删改查的 简化开发操作
ssh+baseDao实现分页,分享给新人
NULL 博文链接:https://uule.iteye.com/blog/941483
/** * 获取数据库链接 */ public static Connection getConn() { Connection con = null; try { Class.forName(DRIVER); // 载入JDBC con = DriverManager.getConnection(DBURL, "", "");...
java泛型BaseDao与BaseService
基于hibernate封装的BaseDao,有完整的增删改查,分页,执行hql sql 方法 约 20个方法,详情地址 https://blog.csdn.net/qq_41861261/article/details/85595872
BaseDao代码通用Dao
java中Dao层中的BaseDao,适用于C#连接数据库
这个一个Java的BaseDAO和分页处理的ppt,很好哦,没事可以看一下
BaseDao标准模板