📄 basedaoibatis.java
字号:
package com.struts2.framework.dao.ibatisImpl;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.util.ClassUtils;
import com.struts2.framework.dao.BaseDao;
/**
* @author Bobby Diaz
* @version 1.0
*/
public class BaseDaoiBATIS extends SqlMapClientDaoSupport implements
BaseDao {
protected final Log log = LogFactory.getLog(getClass());
public Collection getObjects(Class clazz) {
return getSqlMapClientTemplate().queryForList(
getSelectQuery(ClassUtils.getShortName(clazz)), null);
}
public Collection getObjects(Class clazz, Object parameters) {
Collection queryResult = null;
try {
queryResult = getSqlMapClientTemplate().queryForList(
getSelectQuery(ClassUtils.getShortName(clazz)), parameters);
} catch (Exception e) {
e.printStackTrace();
}
return queryResult;
}
public Object getObject(Class clazz, Serializable primaryKey) {
Object object = getSqlMapClientTemplate().queryForObject(
getFindQuery(ClassUtils.getShortName(clazz)), primaryKey);
if (object == null) {
throw new ObjectRetrievalFailureException(ClassUtils
.getShortName(clazz), primaryKey);
}
return object;
}
public Object saveObject(final Object object) {
String className = ClassUtils.getShortName(object.getClass());
Object primaryKey = getSqlMapClientTemplate().insert(
getInsertQuery(className), object);
// check for null id
if (primaryKey == null) {
throw new ObjectRetrievalFailureException(className, object);
}
return primaryKey;
}
public int updateObject(Object object) {
String className = ClassUtils.getShortName(object.getClass());
return getSqlMapClientTemplate().update(getUpdateQuery(className),
object);
}
public void removeObject(Class clazz, Serializable primaryKey) {
getSqlMapClientTemplate().update(
getDeleteQuery(ClassUtils.getShortName(clazz)), primaryKey);
}
private String getPrimaryKeyFieldName(Object o) {
Field fieldlist[] = o.getClass().getDeclaredFields();
String fieldName = null;
for (int i = 0; i < fieldlist.length; i++) {
Field fld = fieldlist[i];
if (fld.getName().equals("id")) {
fieldName = fld.getName();
break;
}
}
return fieldName;
}
protected Object getPrimaryKeyValue(Object o) {
// Use reflection to find the first property that has the name "id" or
// "Id"
String fieldName = getPrimaryKeyFieldName(o);
String getterMethod = "get"
+ Character.toUpperCase(fieldName.charAt(0))
+ fieldName.substring(1);
try {
Method getMethod = o.getClass().getMethod(getterMethod, null);
return getMethod.invoke(o, null);
} catch (Exception e) {
e.printStackTrace();
log.error("Could not invoke method '" + getterMethod + "' on "
+ ClassUtils.getShortName(o.getClass()));
}
return null;
}
/**
* @return Returns the select query name.
*/
public String getSelectQuery(String className) {
return "get" + className + "s";
}
/**
* @return Returns the find query name.
*/
public String getFindQuery(String className) {
return "get" + className;
}
/**
* @return Returns the insert query name.
*/
public String getInsertQuery(String className) {
return "add" + className;
}
/**
* @return Returns the update query name.
*/
public String getUpdateQuery(String className) {
return "update" + className;
}
/**
* @return Returns the delete query name.
*/
public String getDeleteQuery(String className) {
return "delete" + className;
}
/**
* @return Returns the recount query name.
*/
public String getRecountQuery(String className) {
return "getRecount" + className;
}
public Class getFeaturedClass() {
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -