首页>代码>G4Studio行业应用二次快速java开发平台最新版(5.2正式发行版)>/project/src/main/java/org/g4studio/common/dao/impl/DaoImpl.java
package org.g4studio.common.dao.impl; import java.sql.Connection; import java.sql.SQLException; import java.util.List; import javax.sql.DataSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.g4studio.common.dao.Dao; import org.g4studio.core.exception.PrcException; import org.g4studio.core.metatype.Dto; import org.g4studio.core.metatype.impl.BaseDto; import org.g4studio.core.orm.xibatis.support.SqlMapClientTemplate; import org.g4studio.core.orm.xibatis.support.bridge.SqlMapClientDaoSupport; import org.g4studio.core.properties.PropertiesFactory; import org.g4studio.core.properties.PropertiesFile; import org.g4studio.core.properties.PropertiesHelper; import org.g4studio.core.util.G4Constants; import org.g4studio.core.util.G4Utils; /** * 数据访问实现类(原生)<br> * 基于Spring对iBatis的支持机制实现,支持自定义的数据操作 * * @author XiongChun * @since 2009-07-23 */ public class DaoImpl extends SqlMapClientDaoSupport implements Dao{ private static Log log = LogFactory.getLog(DaoImpl.class); /** * 插入一条记录 * * @param SQL语句ID号 * @param parameterObject * 要插入的对象(map javaBean) */ public void insert(String statementName, Object parameterObject) { getSqlMapClientTemplate().insert(statementName, parameterObject); } /** * 插入一条记录 * * @param SQL语句ID号 */ public void insert(String statementName) { getSqlMapClientTemplate().insert(statementName, new BaseDto()); } /** * 查询一条记录 * * @param SQL语句ID号 * @param parameterObject * 查询条件对象(map javaBean) */ public Object queryForObject(String statementName, Object parameterObject) { return getSqlMapClientTemplate().queryForObject(statementName, parameterObject); } /** * 查询一条记录 * * @param SQL语句ID号 */ public Object queryForObject(String statementName) { return getSqlMapClientTemplate().queryForObject(statementName, new BaseDto()); } /** * 查询记录集合 * * @param SQL语句ID号 * @param parameterObject * 查询条件对象(map javaBean) */ public List queryForList(String statementName, Object parameterObject) { return getSqlMapClientTemplate().queryForList(statementName, parameterObject); } /** * 查询记录集合 * * @param SQL语句ID号 */ public List queryForList(String statementName) { return getSqlMapClientTemplate().queryForList(statementName, new BaseDto()); } /** * 按分页查询 * * @param SQL语句ID号 * @param parameterObject * 查询条件对象(map javaBean) * @throws SQLException */ public List queryForPage(String statementName, Dto qDto) throws SQLException { Connection connection = getConnection(); String dbNameString = connection.getMetaData().getDatabaseProductName().toLowerCase(); try { connection.close(); } catch (Exception e) { log.error(G4Constants.Exception_Head + "未正常关闭数据库连接"); e.printStackTrace(); } String start = qDto.getAsString("start"); String limit = qDto.getAsString("limit"); int startInt = 0; if (G4Utils.isNotEmpty(start)) { startInt = Integer.parseInt(start); if (dbNameString.indexOf("ora") > -1) { qDto.put("start", startInt + 1); } else if (dbNameString.indexOf("mysql") > -1) { qDto.put("start", startInt); } else { qDto.put("start", startInt); } }else { qDto.put("start", 0); log.warn("缺失分页起始参数,后台已经为你自动赋值,但建议您参照标准范例,如果不是分页查询请使用queryForList()方法"); } if (G4Utils.isNotEmpty(limit)) { int limitInt = Integer.parseInt(limit); if (dbNameString.indexOf("ora") > -1) { qDto.put("end", limitInt + startInt); } else if (dbNameString.indexOf("mysql") > -1) { qDto.put("end", limitInt); } else { qDto.put("end", limitInt); } }else { qDto.put("end", 999999); log.warn("缺失分终止页参数,后台已经为你自动赋值,但建议您参照标准范例,如果不是分页查询请使用queryForList()方法"); } Integer intStart = qDto.getAsInteger("start"); Integer end = qDto.getAsInteger("end"); return getSqlMapClientTemplate().queryForList(statementName, qDto, intStart.intValue(), end.intValue()); } /** * 更新记录 * * @param SQL语句ID号 * @param parameterObject * 更新对象(map javaBean) */ public int update(String statementName, Object parameterObject) { return getSqlMapClientTemplate().update(statementName, parameterObject); } /** * 更新记录 * * @param SQL语句ID号 */ public int update(String statementName) { return getSqlMapClientTemplate().update(statementName, new BaseDto()); } /** * 删除记录 * * @param SQL语句ID号 * @param parameterObject * 更新对象(map javaBean) */ public int delete(String statementName, Object parameterObject) { return getSqlMapClientTemplate().delete(statementName, parameterObject); } /** * 删除记录 * * @param SQL语句ID号 */ public int delete(String statementName) { return getSqlMapClientTemplate().delete(statementName, new BaseDto()); } /** * 调用存储过程<br> * 存储过程成功返回标志缺省:appCode=1 * * @param prcName * 存储过程ID号 * @param parameterObject * 参数对象(入参、出参) * @throws PrcException * 存储过程调用异常 */ public void callPrc(String prcName, Dto prcDto) throws PrcException { PropertiesHelper pHelper = PropertiesFactory.getPropertiesHelper(PropertiesFile.G4); String callPrcSuccessFlag = pHelper.getValue("callPrcSuccessFlag", "1"); // getSqlMapClientTemplate().queryForObject(prcName, prcDto); getSqlMapClientTemplate().insert(prcName, prcDto); if (G4Utils.isEmpty(prcDto.getAsString("appCode"))) { throw new PrcException(prcName, "存储过程没有返回状态码appCode"); } else { if (!prcDto.getAsString("appCode").equals(callPrcSuccessFlag)) { throw new PrcException(prcName, prcDto.getAsString("appCode"), prcDto.getAsString("errorMsg")); } } } /** * 调用存储过程<br> * 存储过程成功返回标志自定义:appCode=successFlag(自定义的传入变量) * * @param prcName * 存储过程ID号 * @param parameterObject * 参数对象(入参、出参) * @param prcName * 存储过程调用成功返回的成功代码值 * @throws PrcException * 存储过程调用异常 */ public void callPrc(String prcName, Dto prcDto, String successFlag) throws PrcException { // getSqlMapClientTemplate().queryForObject(prcName, prcDto); getSqlMapClientTemplate().insert(prcName, prcDto); if (G4Utils.isEmpty(prcDto.getAsString("appCode"))) { throw new PrcException(prcName, "存储过程没有返回状态码appCode"); } else { if (!prcDto.getAsString("appCode").equals(successFlag)) { throw new PrcException(prcName, prcDto.getAsString("appCode"), prcDto.getAsString("errorMsg")); } } } /** * 获取Connection对象<br> * 说明:虽然向Dao消费端暴露了获取Connection对象的方法但不建议直接获取Connection对象进行JDBC操作 * * @return 返回Connection对象 * @throws SQLException */ public Connection getConnection() throws SQLException { return getSqlMapClientTemplate().getDataSource().getConnection(); } /** * 获取DataSource对象<br> * 说明:虽然向Dao消费端暴露了获取DataSource对象的方法但不建议直接获取DataSource对象进行JDBC操作 * * @return 返回DataSource对象 */ public DataSource getDataSourceFromSqlMap() throws SQLException { return getSqlMapClientTemplate().getDataSource(); } /** * 获取SqlMapClientTemplate对象<br> * * @return 返回SqlMapClientTemplate对象 */ public SqlMapClientTemplate getSqlMapClientTpl() { return getSqlMapClientTemplate(); } }
最近下载更多
zhxhcj LV8
2021年6月18日
jxly007 LV8
2020年10月2日
lironggang LV38
2020年4月22日
onewaymail LV6
2019年5月1日
799574185 LV1
2019年1月16日
sidifenshishi LV2
2018年12月16日
huahau LV4
2018年9月19日
江湖第一高 LV2
2018年7月4日
wwj0214 LV25
2018年5月10日
1244183062 LV1
2018年4月8日