SSH框架中通用的原生SQL查询基类支持,利便举办双orm操纵
发布时间:2021-01-14 20:32:07 所属栏目:编程 来源:网络整理
导读:本日PHP站长网 52php.cn把网络自互联网的代码分享给各人,仅供参考。 package com.common; import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.Ma
|
以下代码由PHP站长网 52php.cn网络自互联网 此刻PHP站长网小编把它分享给各人,仅供参考 package com.common;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
/**
* 通用的SQL查询基类
*/
public class BaseGeneralQuery extends AbstractHibernateDAOImpl {
/**
* 通用的SQL查询要领(返回多笔记录)
*
* SQL:SQL语句,牢记必需指定查询字段,不行行使通配 *
* sqlType:SQL(原生SQL)、HQL(HQL语句)
*
* List对应每一笔记录,Map的put中对应中每一个字段、值。SQL语句,应类型SQL语句,HQL最好兼容SQL的写法.
* 理会Map的时辰,必要通过查询字段对应的下标获取,从0开始。如:maps.get(0).toString();
*/
public List<Map> executeQuery(String sqlType,String sql){
List<Map> list=null;
try {
list = new LinkedList<Map>();
Session session = this.getSession();
Query query = null;
if("SQL".equals(sqlType)){
query = session.createSQLQuery(sql);
}
if("HQL".equals(sqlType)){
query = session.createQuery(sql);
}
//String hqlstr = sql.toString().substring(6,sql.toString().indexOf("from")).trim();
//String[] codenames = hqlstr.split(",");
Map maps = null;
Iterator it = query.list().iterator();
while(it.hasNext()){
maps = new HashMap();
Object[] obj = (Object[])it.next();
//因为SQL可能是HQL语句的查询字段的伟大性和类型性,无法举办有用的截取判定。只能举办数据条字段下标举办通用封装。
for(int i=0;i<obj.length;i++){
maps.put(i,obj[i]==null?"":obj[i].toString());
}
list.add(maps);
}
} catch (Exception e) {
System.out.println("#Error BaseGeneralQuery.executeQuery(String sqlType,String sql) ["+e.getMessage()+"] ");
}
return list;
}
/**
* 通用的SQL查询要领(返回一条数据荟萃)
* SQL:SQL语句(select aa,bb from table
* 返回按照语句查询到的记录工具Map映射
*/
public Map getObject(String sql){
Map map = null;
try {
List<Object[]> object = super.getSession(true).createSQLQuery(sql).list();
if(object != null && object.size() >0 ){
map = new HashMap();
for(int j=0;j<object.get(0).length;j++){
map.put(j,object.get(0)[j]);
}
}
super.getSession(true).close();
} catch (Exception e) {
System.out.println("#Error BaseGeneralQuery.getObject(String sql) ["+e.getMessage()+"] ");
}
return map;
}
/**
* 通用的SQL查询要领(返回单个字段数据)
* field: 单个查询语句的字段aa
* SQL:SQL语句(select aa from table
* 返回按照语句查询到的记录工具Map映射
*/
public String getString(String field,String sql){
String val = "";
try {
val = (String)super.getSession(true).createSQLQuery(sql).addScalar(field,Hibernate.STRING).uniqueResult();
super.getSession(true).close();
} catch (Exception e) {
System.out.println("#Error BaseGeneralQuery.getString(String field,String sql) ["+e.getMessage()+"] ");
}
return val;
}
/**
* 通用的SQL查询要领(返回记录条数)
*
* SQL:SQL语句,(select count(*) counts from table )
* sqlType:SQL(原生SQL)、HQL(HQL语句)
*
* 返回按照语句查询到的记录条数
*/
public int executeQueryCount(String sqlType,String sql){
int count = 0;
try {
Session session = this.getSession();
if("SQL".equals(sqlType)){
count = Integer.parseInt((String) session.createSQLQuery(sql).addScalar("counts",Hibernate.STRING).uniqueResult());
}
if("HQL".equals(sqlType)){
count = session.createQuery(sql).list().size();
}
} catch (Exception e) {
System.out.println("#Error BaseGeneralQuery.executeQueryCount(String sqlType,String sql) ["+e.getMessage()+"] ");
}
return count;
}
/**
* 通用的SQL添加要领
*
* SQL:SQL语句,(select count(*) counts from table )
* sqlType:SQL(原生SQL)、HQL(HQL语句)
*
* 返回SQL语句受影响的行数
*/
public int executeSave(String sqlType,String sql){
int count = 0;
try {
Session session = this.getSession();
if("SQL".equals(sqlType)){
count = session.createSQLQuery(sql).executeUpdate();
}
if("HQL".equals(sqlType)){
//count = session.createQuery(sql).list().size();
}
} catch (Exception e) {
System.out.println("#Error BaseGeneralQuery.executeSave(String sqlType,String sql) ["+e.getMessage()+"] ");
}
return count;
}
}
以上内容由PHP站长网【52php.cn】网络清算供各人参考研究 假如以上内容对您有辅佐,接待保藏、点赞、保举、分享。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


