package com.luck.common.base;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.transform.Transformers;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.luck.common.util.Hdto;
import com.luck.common.util.convert.MapToEntryConvertUtils;
public abstract class BaseDao extends HibernateDaoSupport{
/**
* 插入一个实体
*/
public String addEntity(Object entity){
return this.getHibernateTemplate().save(entity).toString();
}
/**
* 修改一个实体
*/
public void updateEntity(Object entity){
this.getHibernateTemplate().update(entity);
}
/**
* 保存或更新一个实体
*/
public void saveOrUpdateEntity(Object entity){
this.getHibernateTemplate().saveOrUpdate(entity);
}
/**
* 删除一个实体
*/
public void delEntity(Object entity){
this.getHibernateTemplate().delete(entity);
}
/**
* 根据属性获得一个实体对象
*/
public <T extends Object> T getEntity(Class<T> entityName,String... con) {
String[] conditon = con;
if(conditon.length==0||conditon.length%2!=0) return null;//如果不是双数条件,退出
int max = conditon.length/2;
StringBuffer sb = new StringBuffer("");
sb.append("from ").append(entityName.getSimpleName());
String hql="from "+entityName.getSimpleName()+" where 1=1 ";
for (int i = 0; i < max; i++) {
if(i==0){
sb.append(" where ");
}else{
sb.append(" and ");
}
sb.append(conditon[i*2]).append("=:field").append(i);
}
Query query=this.getSession().createQuery(sb.toString());
for (int i = 0; i < max; i++) {
query.setString("field"+i, conditon[i*2+1]);
}
List list = query.list();
query.setMaxResults(1);
if(list!=null&&list.size()>0){
return (T)list.get(0);
}
return null;
}
/**
* 根据属性对得到计数,常用于唯一性检查
*/
public int getEntityCount(Class entityName,String... con) {
String[] conditon = con;
if(conditon.length==0||conditon.length%2!=0) return -1;//如果不是双数条件,退出
int max = conditon.length/2;
StringBuffer sb = new StringBuffer("");
sb.append("select count(*) from ").append(entityName.getSimpleName());
String hql="from "+entityName.getSimpleName()+" where 1=1 ";
for (int i = 0; i < max; i++) {
if(i==0){
sb.append(" where ");
}else{
sb.append(" and ");
}
sb.append(conditon[i*2]).append("=:field").append(i);
}
Query query=this.getSession().createQuery(sb.toString());
for (int i = 0; i < max; i++) {
query.setString("field"+i, conditon[i*2+1]);
}
return this.getIntByObject(query.uniqueResult());
}
/**
* 根据条件查询表计数
*/
public int getTableCount(String presql, Class table,Hdto dto,boolean commonsqlflag) throws ParseException{
StringBuffer hql = new StringBuffer();
if(this.isNotEmpty(presql)){
hql.append(presql).append(" ");
}else{
hql.append("select count(*) from ").append(table.getSimpleName()).append(" where 1=1 ");
}
List<String> keys = dto.getKeys();
if(keys.size()>0){
for (int i = 0; i < keys.size(); i++) {
String key = keys.get(i);
String keyname = dto.getKeynameByKey(key);
String type = dto.getOptypeByKey(key);
if(Hdto.SPE_OR.equals(type)){
String[] pkeys = dto.getPamorPam(key);
if(pkeys!=null){
hql.append(" and ( ");
for (int j = 0; j < pkeys.length; j++) {
hql.append(keyname).append(" = ").append(":").append(pkeys[j]);
if(j!=pkeys.length-1){
hql.append(" or ");
}
}
hql.append(" )");
}
}else{
if(Hdto.T_BTIME.equals(type)){//开始日期类型处理
type = " >= ";
}else if(Hdto.T_ETIME.equals(type)){//结束日期类型处理
type = " <= ";
}
hql.append(" and ").append(keyname).append(" ").append(type).append(" ").append(":").append(key);
}
}
}
if(dto.isDebug()){
System.out.println(hql);
}
Query query = null;
if(commonsqlflag){//如果是普通sql
query = this.getSession().createSQLQuery(hql.toString());
}else{
query = this.getSession().createQuery(hql.toString());
}
if(keys.size()>0){
for (int i = 0; i < keys.size(); i++) {
String key = keys.get(i);
String value = dto.getValueByKey(key);
String type = dto.getOptypeByKey(key);
if(Hdto.T_BTIME.equals(type)){//开始日期类型处理
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
query.setTimestamp(key,sdf.parse(value.trim()+" 00:00:00"));
}else if(Hdto.T_ETIME.equals(type)){//结束日期类型处理
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
query.setTimestamp(key,sdf.parse(value.trim()+" 23:59:59"));
}else{
query.setString(key, value);
}
}
}
return this.getIntByObject(query.uniqueResult());
}
/** *
* 根据条件查询列表- 用于分页 *
* @param presql 如果不为空,一般用于多表联合查询
* @param table 一般用于hql单表查询,当presql为空时生效
* @param dto 参数传递
* @param start
* @param count
* @param orderstr
* @param commonsqlflag true 使用SQLQuery false 使用Query
* @return
* @throws ParseException
*/
public List getTableList(String presql, Class table,Hdto dto,int start, int count,String orderstr,boolean commonsqlflag,Class clzz) throws ParseException{
StringBuffer hql = new StringBuffer();
if(this.isNotEmpty(presql)){
hql.append(presql).append(" ");
}else{
hql.append(" from ").append(table.getSimpleName()).append(" where 1=1 ");
}
List<String> keys = dto.getKeys();
if(keys.size()>0){
for (int i = 0; i < keys.size(); i++) {
String key = keys.get(i);
String keyname = dto.getKeynameByKey(key);
String type = dto.getOptypeByKey(key);
if(Hdto.SPE_OR.equals(type)){
String[] pkeys = dto.getPamorPam(key);
if(pkeys!=null){
hql.append(" and ( ");
for (int j = 0; j < pkeys.length; j++) {
hql.append(keyname).append(" = ").append(":").append(pkeys[j]);
if(j!=pkeys.length-1){
hql.append(" or ");
}
}
hql.append(" )");
}
}else{
if(Hdto.T_BTIME.equals(type)){//开始日期类型处理
type = " >= ";
}else if(Hdto.T_ETIME.equals(type)){//结束日期类型处理
type = " <= ";
}
hql.append(" and ").append(keyname).append(" ").append(type).append(" ").append(":").append(key);
}
}
}
hql.append(" ").append(orderstr==null?"":orderstr);
if(dto.isDebug()){
System.out.println(hql);
}
Query query = null;
if(commonsqlflag){//如果是普通sql
query = this.getSession().createSQLQuery(hql.toString());
}else{
query = this.getSession().createQuery(hql.toString());
}
if(this.isNotEmpty(presql)){
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
}
if(keys.size()>0){
for (int i = 0; i < keys.size(); i++) {
String key = keys.get(i);
String value = dto.getValueByKey(key);
String type = dto.getOptypeByKey(key);
if(Hdto.T_BTIME.equals(type)){//开始日期类型处理
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
query.setTimestamp(key,sdf.parse(value.trim()+" 00:00:00"));
}else if(Hdto.T_ETIME.equals(type)){//结束日期类型处理
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
query.setTimestamp(key,sdf.parse(value.trim()+" 23:59:59"));
}else{
query.setString(key, value);
}
}
}
if(start!=-99){//用于不分页的情况
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
spring3 mvc例子 (464个子文件)
BaseDao.class 8KB
HttpSocketKit.class 6KB
BaseSessionAction.class 6KB
MapToEntryConvertUtils.class 4KB
BaseService.class 4KB
ConvertFactory.class 4KB
Hdto.class 3KB
MapToEntryConvertUtils$ConvertEntryItem.class 3KB
RestController.class 3KB
FmKit.class 3KB
IgagaData.class 3KB
BaseArea.class 3KB
ObjectToDateConvert.class 3KB
MatrixToImageWriter.class 2KB
FMark.class 2KB
FMarkRow.class 2KB
ObjectToIntegerConvert.class 2KB
ObjectToFloatConvert.class 2KB
Ent.class 1KB
Test.class 1KB
ActionInterceptor.class 1KB
Constant.class 1KB
TestMind.class 1017B
Person.class 717B
HttpSocketKit$UTF8PostMethod.class 629B
SyslogService.class 612B
SyslogDao.class 496B
CheckMsgTag.class 471B
UtilDao.class 409B
Convert.class 285B
.classpath 4KB
styles.css 22KB
960.css 9KB
jbox.css 4KB
jbox.css 4KB
jbox.css 4KB
jbox.css 4KB
jbox.css 4KB
jbox.css 4KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
jbox.css 3KB
crstyle.css 1KB
reset.css 693B
Thumbs.db 33KB
Thumbs.db 33KB
Thumbs.db 33KB
Thumbs.db 33KB
Thumbs.db 33KB
Thumbs.db 33KB
Thumbs.db 33KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 19KB
Thumbs.db 4KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-content-loading.gif 11KB
jbox-loading3.gif 9KB
jbox-loading3.gif 9KB
jbox-loading3.gif 9KB
jbox-loading3.gif 9KB
jbox-loading3.gif 9KB
jbox-loading3.gif 9KB
共 464 条
- 1
- 2
- 3
- 4
- 5
资源评论
- mambotango2015-02-01nice 适合入门开发
scuzpcliff
- 粉丝: 4
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功