JEECG4.0老版 Sql Hql

封装的新方法,基于Hibernate,可以快速执行sql

我封装了两个只要写好sql就可以执行的方法,
一个是获取所有语句,另一个是支持分页,做分页时可以只写一个sql就可以了,不用像以前要写两个sql,可以提高效率。
 

Hibernate , Minidao,的总结

添加Hql执行count(*)值方法

话不多说,直接上代码。

框架的查询,分页查询代码不好用,非常不好用

目录

后端JAVA

 执行代码

前端代码


经过实际使用验证后,select使用如下方法

	@Transactional(readOnly = true)
	public List<Map<String, Object>> findForJdbc(String sql, int page, int rows) {
		return commonDao.findForJdbc(sql, page, rows);
	}

	@Transactional(readOnly = true)
	public List<Map<String, Object>> findForJdbc(String sql, Object... objs) {
		return commonDao.findForJdbc(sql, objs);
	}

	@Transactional(readOnly = true)
	public List<Map<String, Object>> findForJdbcParam(String sql, int page,
			int rows, Object... objs) {
		return commonDao.findForJdbcParam(sql, page, rows, objs);
	}

后端JAVA

  为Hibernate读取sql文件

	
	public static <T> String getPathByClass(Class<T> entityClass,String sqlName) {
		
		URL path = entityClass.getResource("");
		
		File file = new File(path.getPath()).getParentFile();
		file = new File(file.getPath()+File.separator+"dao"+File.separator+sqlName);
		
		try {
			return(IOUtils.toString(new FileInputStream(file)));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public static void main(String[] args) {
		System.out.println(getPathByClass(FieldEitity.class,"TestDao_getAllFieldFromTable.sql"));
	}
	public static void main4(String[] args) {
		URL path = DccInternalFileController.class.getResource("/");
		System.out.println(path.getPath());
		
		path = DccInternalFileController.class.getResource("");
		System.out.println(path.getPath());
		
		File file = new File(path.getPath());
		System.out.println(file.getPath());
		
		file = file.getParentFile();
		System.out.println(file.getPath());

		file = new File(file.getPath()+File.separator+"dao"+File.separator+"DccInternalDao_getDataPageBysepcNo.sql");
		System.out.println(file.getPath());
		
		try {
			System.out.println(IOUtils.toString(new FileInputStream(file)));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

 执行代码

String hql = "select distinct printBy from CircleRecoveryconfirmEntity where nodeid='001' and needrecycle='Y' and specNo in (:specNoList)";
Query queryObject = getSession().createQuery(hql);
		
queryObject.setParameterList("specNoList", specnoArr);
List<String> stringlist = queryObject.list();
/**
 * 
 */
package com.dcc.common.service.impl;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;

import org.hibernate.Cache;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.web.system.pojo.base.TSDepart;
import org.jeecgframework.web.system.pojo.base.TSUser;
import org.jeecgframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;

import com.circle.core.util.StringUtility;
import com.dcc.common.entity.DccBaseUserEntity;
import com.dcc.common.service.CircleCommonDaoService;
import com.dcc.common.service.RecordExceptionService;

/**
 * create at 2022-04-27
 * 
 * @version 0.0.8
 * @author tianming.fan
 *
 */
@Service("CircleCommonDaoService")
public class CircleCommonDaoServiceImpl implements CircleCommonDaoService {

	/*
	 * @Autowired private CommonService commonService;
	 */
	@Autowired
	private SystemService systemService;
	@Autowired
	private RecordExceptionService recordExceptionService;

	@SuppressWarnings("unchecked")
	@Override
	public <T> List<T> findListbySql(String sql, Class<T> entityClass, Object... param) {
		Session session = systemService.getSession();
		if (!session.isOpen()||!session.isConnected()) {
			recordExceptionService.recordPrintErrMsgByLogLevel("Hibernate Session 未开启", Globals.LOG_LEAVEL_INFO);
			session = session.getSessionFactory().openSession();
		}
		if (!session.isOpen()||!session.isConnected()) {
			recordExceptionService.recordPrintErrMsgByLogLevel("Hibernate Session 未连接", Globals.LOG_LEAVEL_INFO);
			session = systemService.getNewSession();// 重新创建Session
		}
		
		 // getCurrentSession () 使用当前的session
		 // openSession() 重新建立一个新的session
		 

		SQLQuery sqlQuery = session.createSQLQuery(sql);
		sqlQuery.addEntity(entityClass);

		if (param != null && param.length > 0) {
			for (int i = 0; i < param.length; i++) {
				sqlQuery.setParameter(i, param[i]);
			}
		}

		return sqlQuery.list();
	}

	@Override
	public <T> List<T> findListBySqlMap(String sql, Class<T> entityClass, Map<String, Object> stringMap,
			Map<String, Object[]> arrMap) {
		SQLQuery sqlQuery = systemService.getSession().createSQLQuery(sql);
		sqlQuery.addEntity(entityClass);

		for (Map.Entry<String, Object> entry : stringMap.entrySet()) {
			sqlQuery.setParameter(entry.getKey(), entry.getValue());
		}
		for (Map.Entry<String, Object[]> entry : arrMap.entrySet()) {
			sqlQuery.setParameterList(entry.getKey(), entry.getValue());
		}

		return sqlQuery.list();
	}

	/**
	 * startRow: 开始行数 rows: 每页行数
	 */
	@SuppressWarnings("unchecked")
	@Override
	public <T> List<T> findPageListBySql(String sql, Class<T> entityClass, int startRow, int rows, Object... param) {
		SQLQuery sqlQuery = systemService.getSession().createSQLQuery(sql);
		sqlQuery.addEntity(entityClass);
		sqlQuery.setFirstResult(startRow);
		sqlQuery.setMaxResults(rows);

		if (param != null && param.length > 0) {
			for (int i = 0; i < param.length; i++) {
				sqlQuery.setParameter(i, param[i]);
			}
		}

		return sqlQuery.list();
	}

	@Override
	public <T> List<T> findPageListBySqlPage(String sql, Class<T> entityClass, int page, int rows, Object... param) {
		/*
		 * 这是sql的分页方式,第几行到第几行 int pageInt = page; int rowsInt = rows; int startRow =
		 * (pageInt-1)*rowsInt+1; int endRow = pageInt*rowsInt;
		 */

		int pageInt = page;
		int rowsInt = rows;
		int startRow = (pageInt - 1) * rowsInt + 1 - 1;// hibernate的数据行数是从零开始的,需要减一

		return findPageListBySql(sql, entityClass, startRow, rows, param);
	}

	@Override
	public <T> List<T> findHqlMap(String hql, Map<String, Object> stringMap, Map<String, Object[]> arrMap) {
		Query queryObject = systemService.getSession().createQuery(hql);

		for (Map.Entry<String, Object> entry : stringMap.entrySet()) {
			queryObject.setParameter(entry.getKey(), entry.getValue());
		}
		for (Map.Entry<String, Object[]> entry : arrMap.entrySet()) {
			queryObject.setParameterList(entry.getKey(), entry.getValue());
		}

		return queryObject.list();
	}

	/**
	 * 通过hql 查询语句查找对象
	 *
	 * startRow:开始行数 rows:每页行数
	 * 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	@Override
	public <T> List<T> findPageListByHql(final String hql, int startRow, int rows, Object... param) {

		Query queryObject = systemService.getSession().createQuery(hql);
		queryObject.setFirstResult(startRow);
		queryObject.setMaxResults(rows);

		if (param != null && param.length > 0) {
			for (int i = 0; i < param.length; i++) {
				queryObject.setParameter(i, param[i]);
			}
		}

		List<T> list = queryObject.list();
		return list;
	}

	/**
	 * 使用hibernate框架,直接执行hql语句,支持分页
	 * 
	 * @param hql
	 * @param page
	 *            页数
	 * @param rows
	 *            一页的行数
	 * @param param
	 *            hql参数
	 * @return
	 */
	@SuppressWarnings("unchecked")
	@Override
	public <T> List<T> findPageListByHqlPage(final String hql, int page, int rows, Object... param) {
		int pageInt = page;
		int rowsInt = rows;
		int startRow = (pageInt - 1) * rowsInt + 1 - 1;// hibernate的数据行数是从零开始的,需要减一
		// int endRow = pageInt*rowsInt;

		return findPageListByHql(hql, startRow, rows, param);
	}

	// ******************************************************************
	/**
	 * 根据属性名和属性值查询. 有排序
	 *
	 * @param <T>
	 * @param entityClass
	 * @param propertyName
	 * @param value
	 * @param propertySort
	 * @param isAsc
	 * @return
	 */
	@SuppressWarnings("unchecked")
	@Override
	public <T> List<T> findByPropertyisOrder(Class<T> entityClass, String propertyName, Object value, boolean isAsc,
			String propertySort) {
		Assert.hasText(propertyName);
		Criteria criteria = createCriteria(entityClass, isAsc, propertySort, Restrictions.eq(propertyName, value));
		return criteria.list();
	}

	/**
	 * 创建Criteria对象,有排序功能。
	 *
	 * @param <T>
	 * @param entityClass
	 * @param propertySort
	 * @param isAsc
	 * @param criterions
	 * @return
	 */
	private <T> Criteria createCriteria(Class<T> entityClass, boolean isAsc, String propertySort,
			Criterion... criterions) {
		Criteria criteria = createCriteria(entityClass, criterions);
		if (isAsc) {
			criteria.addOrder(Order.asc(propertySort));
		} else {
			criteria.addOrder(Order.desc(propertySort));
		}
		return criteria;
	}

	/**
	 * 创建Criteria对象带属性比较
	 *
	 * @param <T>
	 * @param entityClass
	 * @param criterions
	 * @return
	 */
	@SuppressWarnings("finally")
	private <T> Criteria createCriteria(Class<T> entityClass, Criterion... criterions) {
		Criteria criteria = null;
		try {
			Session session = systemService.getSession();
			criteria = session.createCriteria(entityClass);
			for (Criterion c : criterions) {
				criteria.add(c);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			return criteria;
		}

	}

	// -------------------------------------------------

	@Override
	public TSUser getUserByUserName(String username) {

		List<TSUser> list = systemService.findByProperty(TSUser.class, "userName", username);
		if (list.size() > 0) {
			String queryDept = "from TSDepart where id = ?";
			List<TSDepart> departs = systemService.findHql(queryDept, list.get(0).getDepartid());
			TSUser baseUser = list.get(0);
			baseUser.setDeptname(departs.get(0).getDepartname());
			return baseUser;
		} else {
			return getUserByEmpNo(username);
		}
	}

	private TSUser getUserByEmpNo(String empno) {

		List<TSUser> list = systemService.findByProperty(TSUser.class, "empno", empno);
		if (list.size() > 0) {
			String queryDept = "from TSDepart where id = ?";
			List<TSDepart> departs = systemService.findHql(queryDept, list.get(0).getDepartid());
			TSUser baseUser = list.get(0);
			baseUser.setDeptname(departs.get(0).getDepartname());
			return baseUser;
		} else {
			return null;
		}
	}

	// ============================================
	// insert hql 未启用
	private void insertHqlSingleService(String tableName, Map<String, String> fieldMap) throws Exception {
		String hql = "insert into #{tableName} (#{field}) values(#{values})";
		hql = StringUtility.replace(hql, "#{tableName}", tableName);

		StringBuilder fieldHqlBuilder = new StringBuilder();
		for (String key : fieldMap.keySet()) {
			fieldHqlBuilder = StringUtility.builderAppend(fieldHqlBuilder, key, ",");
		}
		fieldHqlBuilder.deleteCharAt(fieldHqlBuilder.length() - 1);

		StringBuilder valuesHqlBuilder = new StringBuilder();
		for (String key : fieldMap.keySet()) {
			valuesHqlBuilder = StringUtility.builderAppend(valuesHqlBuilder, "'", fieldMap.get(key), "',");
		}
		valuesHqlBuilder.deleteCharAt(valuesHqlBuilder.length() - 1);
		hql = StringUtility.replace(hql, "#{field}", fieldHqlBuilder.toString(), "#{values}",
				valuesHqlBuilder.toString());
		recordExceptionService.recordPrintErrMsg("insertHqlSingleService hql:" + hql);
		updateHql(hql);
	}

	// ---------------------------------
	// insert sql
	@Override
	public void insertSqlSingleService(String tableName, Map<String, String> fieldMap) throws Exception {
		String sql = "insert into #{tableName} (#{field}) values(#{values})";
		sql = StringUtility.replace(sql, "#{tableName}", tableName);

		StringBuilder fieldSqlBuilder = new StringBuilder();
		for (String key : fieldMap.keySet()) {
			fieldSqlBuilder = StringUtility.builderAppend(fieldSqlBuilder, key, ",");
		}
		fieldSqlBuilder.deleteCharAt(fieldSqlBuilder.length() - 1);

		StringBuilder valuesSqlBuilder = new StringBuilder();
		for (String key : fieldMap.keySet()) {
			valuesSqlBuilder = StringUtility.builderAppend(valuesSqlBuilder, "'", fieldMap.get(key), "',");
		}
		valuesSqlBuilder.deleteCharAt(valuesSqlBuilder.length() - 1);
		sql = StringUtility.replace(sql, "#{field}", fieldSqlBuilder.toString(), "#{values}",
				valuesSqlBuilder.toString());
		recordExceptionService.recordPrintErrMsg("insertSqlSingleService sql:" + sql);
		systemService.executeSql(sql);
	}

	// ------------------------------------
	// update语句自动生成,和执行的方法
	// 传入表(String),字段和值(HashMap),传入条件(HashMap)
	/**
	 * 自动生成update Sql语句
	 * 
	 * @param tableName
	 * @param fieldMap
	 * @param condiMap
	 * @param sqlExtend
	 * @throws Exception
	 */
	@Override
	public void updateSqlEqualsService(String tableName, Map<String, String> fieldMap, Map<String, String> condiMap,
			String sqlExtend) throws Exception {
		String sql = "update #{tableName} set #{field} where 1=1 #{condition}";
		sql = StringUtility.replace(sql, "#{tableName}", tableName);

		StringBuilder fieldSqlBuilder = new StringBuilder();
		for (String key : fieldMap.keySet()) {
			fieldSqlBuilder = StringUtility.builderAppend(fieldSqlBuilder, key, "='", fieldMap.get(key), "',");
		}
		fieldSqlBuilder.deleteCharAt(fieldSqlBuilder.length() - 1);

		StringBuilder condiSqlBuilder = new StringBuilder();
		for (String key : condiMap.keySet()) {
			condiSqlBuilder = StringUtility.builderAppend(condiSqlBuilder, "and ", key, "='", condiMap.get(key), "'");
		}
		condiSqlBuilder.append(sqlExtend);

		sql = StringUtility.replace(sql, "#{field}", fieldSqlBuilder.toString(), "#{condition}",
				condiSqlBuilder.toString());
		recordExceptionService.recordPrintErrMsg("updateSqlEqualsService sql:" + sql);
		systemService.executeSql(sql);
	}

	@Override
	public void updateHqlEqualsService(String className, Map<String, String> fieldMap, Map<String, String> condiMap,
			String sqlExtend) throws Exception {
		String hql = "update #{className} set #{field} where 1=1 #{condition}";
		hql = StringUtility.replace(hql, "#{className}", className);

		StringBuilder fieldSqlBuilder = new StringBuilder();
		for (String key : fieldMap.keySet()) {
			fieldSqlBuilder = StringUtility.builderAppend(fieldSqlBuilder, key, "='", fieldMap.get(key), "',");
		}
		fieldSqlBuilder.deleteCharAt(fieldSqlBuilder.length() - 1);

		StringBuilder condiSqlBuilder = new StringBuilder();
		for (String key : condiMap.keySet()) {
			condiSqlBuilder = StringUtility.builderAppend(condiSqlBuilder, "and ", key, "='", condiMap.get(key), "'");
		}
		condiSqlBuilder.append(sqlExtend);
		hql = StringUtility.replace(hql, "#{field}", fieldSqlBuilder.toString(), "#{condition}",
				condiSqlBuilder.toString());
		recordExceptionService.recordPrintErrMsg("updateHqlEqualsService hql:" + hql);
		updateHql(hql);
	}

	/**
	 * 直接执行Hql语句
	 * 
	 * @param hql
	 * @return
	 * @throws Exception
	 */
	@Override
	public int updateHql(String hql) throws Exception {
		Query queryObject = systemService.getSession().createQuery(hql);
		int ret = queryObject.executeUpdate();// insert update都可以执行
		return ret;
	}

	@Override
	public int updateHql(String hql, Object... param) throws Exception {
		Query queryObject = systemService.getSession().createQuery(hql);

		if (param != null && param.length > 0) {
			for (int i = 0; i < param.length; i++) {
				queryObject.setParameter(i, param[i]);
			}
		}

		int ret = queryObject.executeUpdate();// insert update都可以执行
		return ret;
	}/**/
	// ----------------------------------

	/*
	 * 返回数组
[
  [
    "F2-2-003",
    "测试运维工具",
    "1",
    "F2-2-003-F001-00",
    "关于2017年姑苏区微信开发深度解析培训班的通知.docx"
  ],
  [
    "F2-2-003",
    "测试运维工具",
    "1",
    "F2-2-003-F002-00",
    "赛科.xlsx"
  ],
  [
    "F2-2-003",
    "测试运维工具",
    "1",
    "F2-2-003-F007-00",
    "QA-F-115 Fab?Weekly?Report?Format.pptx"
  ]
]
	 * 
	 * */
	@SuppressWarnings("unchecked")
	@Override
	public <T> List<T> findListbySql(String sql, Object... param) {
		Session session = systemService.getSession();
		if (!session.isOpen()||!session.isConnected()) {
			recordExceptionService.recordPrintErrMsgByLogLevel("Hibernate Session 未开启", Globals.LOG_LEAVEL_INFO);
			session = session.getSessionFactory().openSession();
		}
		if (!session.isOpen()||!session.isConnected()) {
			recordExceptionService.recordPrintErrMsgByLogLevel("Hibernate Session 未连接", Globals.LOG_LEAVEL_INFO);
			session = systemService.getNewSession();// 重新创建Session
		}
		
		 // getCurrentSession () 使用当前的session
		 // openSession() 重新建立一个新的session
		 

		SQLQuery sqlQuery = session.createSQLQuery(sql);

		if (param != null && param.length > 0) {
			for (int i = 0; i < param.length; i++) {
				sqlQuery.setParameter(i, param[i]);
			}
		}

		return sqlQuery.list();
	}
}

/**
 * 
 */
package com.dcc.common.service;

import java.util.List;



/**
 * @author tianming.fan
 *
 */
public interface CircleCommonDaoService {

	/**
	 * 使用hibernate框架,直接执行sql语句
	 * 
	 * @param sql
	 * @param entityClass
	 * @param param sql参数
	 * @return
	 */
	public <T> List<T> findListbySql(String sql, Class<T> entityClass, Object... param);

	/**
	 * 使用hibernate框架,直接执行sql语句,支持分页
	 * 
	 * @param sql
	 * @param entityClass
	 * @param startRow 第一条数据行数
	 * @param rows   每页行数
	 * @param param sql参数
	 * @return
	 */
	public <T> List<T> findPageListBySql(String sql,Class<T> entityClass,int startRow,int rows, Object... param);
	
	/**
	 * 使用hibernate框架,直接执行sql语句,支持分页,传入页数和行数
	 * 
	 * @param sql
	 * @param entityClass
	 * @param page  页数
	 * @param rows  一页的行数
	 * @param param sql参数
	 * @return
	 */
	public <T> List<T> findPageListBySqlPage(String sql, Class<T> entityClass, int page, int rows, Object... param);
	
	/**
	 * 使用hibernate框架,直接执行hql语句
	 * 
	 * @param hql
	 * @param startRow  第一条数据行数
	 * @param rows   每页行数
	 * @param param    sql参数
	 * @return
	 */
	public <T> List<T> findPageListByHql(final String hql, int startRow, int rows, Object... param);
	
	/**
	 * 使用hibernate框架,直接执行hql语句,支持分页
	 * 
	 * @param hql
	 * @param page   页数
	 * @param rows  一页的行数
	 * @param param  sql参数
	 * @return
	 */
	public <T> List<T> findPageListByHqlPage(final String hql, int page, int rows, Object... param);
	
	/**
	 * 通过属性称获取实体带排序
	 * 
	 * @param entityClass
	 * @param propertyName
	 * @param value
	 * @param isAsc
	 * @param propertySort 排序的字段
	 * @return
	 */
	public <T> List<T> findByPropertyisOrder(Class<T> entityClass,
			String propertyName, Object value, boolean isAsc,String propertySort);
}

  获取Count数量,框架

Long total=systemService.getCountForJdbc("select count(*) from t_s_function where functionlevel=0");

hql 取到 count(*)的值

	@SuppressWarnings("unchecked")
	@Override
	public int getAllAmount(String saveCell) {
		String hql="select count(*) from Detail where saveCell=? and status=?";
		Object[] params={saveCell,true};
		List<Integer> list=
				this.getHibernateTemplate().find(hql, params);
		/*
		 *    这里在Hibernate2.0之前版本list.get(0)返回的是Integer类型. 
                         但是在Hibernate3.0以后版本list.get(0)返回的是Long类型. 
		 * */
		Number num =list.get(0);
	   int amount=num.intValue();
		return amount;
	}

	public Integer executeSql(String sql, List<Object> param) {
		return this.jdbcTemplate.update(sql, param);
	}

	public Integer executeSql(String sql, Object... param) {
		return this.jdbcTemplate.update(sql, param);
	}

	public Integer executeSql(String sql, Map<String, Object> param) {
		return this.namedParameterJdbcTemplate.update(sql, param);
	}


//=================================================================

//executeSql 可以update,delete,drop
String updateSql = "update circle_token set finish_date=dateadd(hh,1,getdate()) where id=?";
int count = systemService.executeSql(updateSql, circleToken.getId());

//-----
int count = systemService.executeSql("delete from t_s_role_org where org_id=?", depart.getId());

//-----
String dropsql =  dbTableHandle.dropTableSQL(cgFormHead.getTableName());
int count = systemService.executeSql(dropsql);


//******************************************************************

private void executeSqlEnhance(String sqlEnhance, CircleTokenEntity t) {
    Map < String, Object > data = populationMap(t);
    sqlEnhance = ResourceUtil.formateSQl(sqlEnhance, data);
    boolean isMiniDao = false;
    try {
        data = ResourceUtil.minidaoReplaceExtendSqlSysVar(data);
        sqlEnhance = FreemarkerParseFactory.parseTemplateContent(sqlEnhance, data);
        isMiniDao = true;
    } catch (Exception e) {}
    String[] sqls = sqlEnhance.split(";");
    for (String sql: sqls) {
        if (sql == null || sql.toLowerCase().trim().equals("")) {
            continue;
        }
        int num = 0;
        if (isMiniDao) {
            num = namedParameterJdbcTemplate.update(sql, data);
        } else {
            num = systemService.executeSql(sql);
        }
    }
}
private Map < String, Object > populationMap(CircleTokenEntity t) {
    Map < String, Object > map = new HashMap < String, Object > ();
    map.put("id", t.getId());
    map.put("create_name", t.getCreateName());
    map.put("create_by", t.getCreateBy());
    map.put("create_date", t.getCreateDate());
    map.put("update_name", t.getUpdateName());
    map.put("update_by", t.getUpdateBy());
    map.put("update_date", t.getUpdateDate());
    map.put("token", t.getToken());
    map.put("finish_date", t.getFinishDate());
    return map;
}


//-----
String sql = "update super_query_history set history_name=" + "'" + name + "' where user_id=" + "'" + userId + "' and history_name=" + "'" + nodeName + "'";
int updateByName = systemService.updateBySqlString(sql);


String sql = "delete from  super_query_history where  history_name=" + "'" + name + "' and user_id=" + "'" + userId + "'";
int deletebyName = systemService.updateBySqlString(sql);

	/**
	 * 通过sql更新记录
	 *
	 * @param <T>
	 * @param query
	 * @return
	 */
	public int updateBySqlString(final String query) {

		Query querys = getSession().createSQLQuery(query);
		return querys.executeUpdate();
	}


//--------- 亲测不好用,需要自己写别名字段名
List<CircleChaptertempGroupEntity> list = systemService.findObjForJdbc(sql1, curPageNO, pageSize, CircleChaptertempGroupEntity.class);


	/**
     * 亲测不好用,需要自己写别名字段名
     *
	 * 使用指定的检索标准检索数据并分页返回数据
	 *
	 * @throws IllegalAccessException
	 * @throws InstantiationException
	 */
	public <T> List<T> findObjForJdbc(String sql, int page, int rows,
			Class<T> clazz) {
		List<T> rsList = new ArrayList<T>();
		// 封装分页SQL
		sql = JdbcDao.jeecgCreatePageSql(sql, page, rows);
		List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql);

		T po = null;
		for (Map<String, Object> m : mapList) {
			try {
				po = clazz.newInstance();
				MyBeanUtils.copyMap2Bean_Nobig(po, m);
				rsList.add(po);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return rsList;
	}


//试用下来不好用,取值时,类无法自动转换到指定类,取值时报错,只能Object接收
	/**
	 * 通过sql查询语句查找对象
	 *
	 * @param <T>
	 * @param query
	 * @return
	 */
	public List<T> findListbySql(final String sql) {
		Query querys = getSession().createSQLQuery(sql);
		return querys.list();
	}


	/**
	 * 调用存储过程
	 */
	@SuppressWarnings({ "unchecked",})
	public <T> List<T> executeProcedure(String executeSql,Object... params) {
		SQLQuery sqlQuery = getSession().createSQLQuery(executeSql);
		
		for(int i=0;i<params.length;i++){
			sqlQuery.setParameter(i, params[i]);
		}
		
		return sqlQuery.list();
	}

 


前端代码


function createwindowWithButton(title, addurl,width,height,OkFunc,CancelFunc) {
	width = width?width:700;
	height = height?height:520;
	if(width=="100%" || height=="100%"){
		width = window.top.document.body.offsetWidth;
		height =window.top.document.body.offsetHeight-100;
	}
    //--author:JueYue---------date:20140427---------for:弹出bug修改,设置了zindex()函数
	if(typeof(windowapi) == 'undefined'){
		var returnobj = $.dialog({
			content: 'url:'+addurl,
			lock : true,
			zIndex: getzIndex(),
			width:width,
			height:height,
			title:title,
			opacity : 0.3,
			cache:false,
		    ok: eval(OkFunc),
		    cancelVal: '关闭',
		    cancel: eval(CancelFunc) /*为true等价于function(){}*/
		});
	}else{

		/*W.*/
		$.dialog({//使用W,即为使用顶级页面作为openner,造成打开的次级窗口获取不到关联的主窗口
			content: 'url:'+addurl,
			lock : true,
			width:width,
			zIndex:getzIndex(),
			height:height,
			parent:windowapi,
			title:title,
			opacity : 0.3,
			cache:false,
		    ok: eval(OkFunc),
		    cancelVal: '关闭',
		    cancel: eval(CancelFunc) /*为true等价于function(){}*/
		});
	}
}


//调用代码
	 createwindowWithButton(
	    	 "驳回原因",
	    	 "dccInternalFileController.do?cancleC",
				600,260,
			 function(){
		          iframe = this.iframe.contentWindow;
		         	//-----------------------------
		          var fomrobjV = iframe.$("#formobj").Validform({tiptype:4});
		          var flag = false;
		          if(fomrobjV.check()){
                      var reason = iframe.$("#cancelRea").val();
			          //业务逻辑代码
			          //.........
			          //---------
			          flag = true;
		          }else{
		        	  flag = false;
		          }
		          if(flag){
		        	  return true;
		          }else{
		        	  return false;
		          }
	    	 },
   		 function(){

   		  return true;
       	 }
      )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
授权方式: 开源软件 界面语言: 简体中文 文件大小: 45.6 MB 更新时间: 2020-08-12 资源类型: 国产软件 推荐等级: ★★★☆☆ 平台环境: JAVA 作者主页: 点击查看 演示地址: 点击查看 详细介绍 – [ JEECG快速开发平台 v4.0 ] JEECG (J2EE Code Generation)是一款基于代码生成器的智能开发平台。引领新的开发模式(Online Coding->代码生成器->手工MERGE智能开发),可以帮助解决Java项目90%的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本,同时又不失灵活性。 JEECG宗旨是:简单功能由代Online Coding配置出功能;复杂功能由代码生成器生成进行手工Merge;复杂流程业务采用表单自定义,业务流程使用工作流来实现、扩展出任务接口,供开发编写业务逻辑。实现了流程任务节点和任务接口的灵活配置,既保证了公司流程的保密行,又减少了开发人员的工作量。 JEECG功能特点 1、采用SpringMVC+Hibernate+Minidao(类Mybatis)+Easyui(UI库)+Jquery+Boostrap+Ehcache+Redis+Ztree+Vue+Boostrap-table+ElementUI等基础架构 2、采用面向声明的开发模式,基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、表单处理等功能,再配合Online Coding在线开发与代码生成器的使用,将J2EE的开发效率提高8倍以上,可以将代码减少90%以上。 3、JEECGV4.0,经过了专业压力测试,性能测试,保证后台数据的准确性和页面访问速度 4、支持多种浏览器:IE,火狐,Google等 5、支持数据库:Mysql,Oracle,Postgre,SqlServer等 6、基础权限:用户,角色,菜单权限,按钮权限,数据权限 7、智能报表集成:简易的图像报表工具和Excel导入导出 8、Web容器测试通过的有Jetty和Tomcat,Weblogic 9、亮点功能:分布式部署,云平台,移动平台开发,规则引擎 10、要求JDK1.6+ JEECG技术点总结 技术点一:代码生成器SPA单页面应用快速生成,采用VUE+ElementUI打造酷炫效果 技术点二:新一代代码生成器更灵活的代码生成器工厂,可灵活自定义生成的代码文件名称、路径等;根据模板结构生成代码文件 技术点三:新一代代码生成器支持Vue+ElementUI风格,Bootstrap表单+EasyUI原生态列表风格,ElementUI表单+EasyUI原生态列表风格 技术点四:Dategrid标签多列表风格快速切换,给用户提供多种选择 技术点五:Online Coding在线开发(通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义表单布局) 技术点六:代码生成器,支持多种数据模型,根据表生成对应的Entity,Service,Dao,Action,JSP等,增删改查功能生成直接使用 技术点七:UI快速开发库,针对WEBUI进行标准封装,页面统一采用UI标签实现功能:数据datagrid,表单校验,Popup,Tab等,实现JSP页面零JS,开发维护非常高效 技术点八:在线流程定义,采用开源Activiti流程引擎,实现在线画流程,自定义表单,表单挂接,业务流转,流程监控,流程跟踪,流程委托等 技术点九:自定义表单,支持用户自定义表单布局,支持单表、列表、Select\\Radio\\Checkbox\\PopUP\\Date等特殊控件 技术点十:查询过滤器:查询功能自动生成,后台动态拼SQL追加查询条件;支持多种匹配方式(全匹配/模糊查询/包含查询/不匹配查询) 技术点十一:移动平台支持,对Bootstrap(兼容Html5)进行标准封装 技术点十二:动态报表功能(用户输入一个sql,系统自动解析生成报表) 技术点十三:数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段) 技术点十四:国际化(支持多语言,国际化的封装为多语言做了便捷支持) 技术点十五:多数据源(在线配置数据源,数据源工作类封装) 技术点十六:多种首页风格切换,支持自定义首页风格。(经典风格、Shortcut风格、ACEbootstrap风格、云桌面风格) 技术点十七:在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表) 技术点十八:简易Excel导入导出,支持单表导出和一对多表模式导出,生成的代码自带导入导出功能 技术点十九:移动OA,移动OA审批功能,采用H5技术,实现手机移动办公,无缝对接微信、钉钉、微信企业号
Spark SQLHQL(Hive 查询语言)在某些方面是相似的,因为 Spark SQL 借鉴了一些 Hive 的语法和功能。但是,它们也有一些区别。下面是对它们之间的主要区别的简要解释: 1. 执行引擎: - Spark SQL 是基于 Spark 引擎的组件,它提供了对结构化数据的处理能力,并支持批处理和实时流处理。 - HQL 是 Hive 的查询语言,基于 MapReduce 或 Tez 这样的底层执行引擎,适用于大规模离线数据处理。 2. 数据存储: - Spark SQL 可以直接读取和处理多种数据源,包括文件系统(如HDFS,S3),关系型数据库(如MySQL,PostgreSQL),NoSQL 数据库(如Cassandra,MongoDB)等。 - HQL 主要针对存储在 Hive 中的数据进行查询,它使用 Hive Metastore 来管理元数据和表结构,并将数据存储在分布式文件系统中。 3. 语法特性: - Spark SQL 支持标准的 SQL 查询语法,并提供了 DataFrame 和 Dataset API 来进行结构化数据处理和分析。 - HQL 基于 SQL 扩展了一些特定的语法和功能,例如自定义函数(UDF/UDAF/UDTF)、分区表、桶表等。 4. 生态系统和集成: - Spark SQL 作为 Spark 的一部分,可以与 Spark 的其他组件(如 Spark Streaming、MLlib 等)进行无缝集成。 - HQL 是 Hive 的一部分,可以与 Hive 的生态系统(如 Hive 储存格式、Hive UDF/UDAF/UDTF 等)进行集成。 尽管 Spark SQLHQL 在某些方面相似,但它们的执行引擎、数据存储、语法特性和生态系统集成等方面存在一些差异。选择使用哪个取决于你的具体需求和环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值