public class HibernateUtils {
private static Logger logger = LoggerFactory.getLogger(HibernateUtils.class);
/**
* 提交二级缓存
*/
public static void commitLocalCache(){
EntityManager entityManager = SpringBeanUtils.getBean(EntityManager.class);
entityManager.flush();
entityManager.clear();
}
/**
* 对象准换为游离状态
* @param entity
*/
public static void evict(Object entity){
EntityManager entityManager = SpringBeanUtils.getBean(EntityManager.class);
if (entityManager.contains(entity)) {
// 获取session
Session session = entityManager.unwrap(org.hibernate.Session.class);
// 转换成游离态
session.evict(entity);
}
}
/**
* 获取一笔数据
* 或Query存在多笔或不存在数据,返回空
* 若只存在一笔,返回这一笔数据
* @param sql
* @return
*/
public static String getOneStringValue(String sql){
EntityManager entityManager = SpringBeanUtils.getBean(EntityManager.class);
Query query = entityManager.createNativeQuery(sql);
logger.info("Execute SQL:" + sql);
List resultList = query.getResultList();
if(resultList.size() == 1 && resultList.get(0) != null){
return String.valueOf(resultList.get(0));
}
return null;
}
/**
* 返回任意实体
* @param sql
* @param clz
* @param <T>
* @return
*/
public static <T> List<T> queryList(String sql, Class<T> clz){
EntityManager entityManager = SpringBeanUtils.getBean(EntityManager.class);
Query query = entityManager.createNativeQuery(sql);
NativeQueryImplementor nativeQueryImplementor = query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(clz));
logger.info("Execute SQL:" + sql);
return (List<T>)nativeQueryImplementor.getResultList();
}
/**
* 返回任意实体(带参数)
* DEMO: Query query =session.createQuery(" from Customer as c where c.name =:customerName");
* query.setString("customerName",name);
* @param sql SQL
* @param clz 返回实体类
* @params 参数(参数名字,值)
* @param <T>
* @return
*/
public static <T> List<T> queryList(String sql, Map<String,String> params ,Class<T> clz){
EntityManager entityManager = SpringBeanUtils.getBean(EntityManager.class);
Query query = entityManager.createNativeQuery(sql,clz);
for (Map.Entry<String, String> entry : params.entrySet()) {
String mapKey = entry.getKey();
Object mapValue = entry.getValue();
query.setParameter(mapKey, mapValue);
}
List<T> list = query.getResultList();
logger.info("Execute SQL:" + sql);
logger.info("Execute SQL Params:" + params.toString());
return list;
}
public static boolean executeSQL(String sql) throws SQLException {
// 获取Spring容器管理的DataSource容器,看系统具体依赖调整
HikariDataSource hikariDataSource = SpringBeanUtils.getBean(HikariDataSource.class);
Connection connection = hikariDataSource.getConnection();
Statement statement = connection.createStatement();
boolean bl = statement.execute(sql);
statement.close();
connection.close();
return bl;
}
}
版权归属:
BKUN
许可协议:
本文使用《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》协议授权
评论区