
com.denghb.eorm.impl.EormAbstractImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eorm-spring Show documentation
Show all versions of eorm-spring Show documentation
A easy based on the Spring JdbcTemplate JDBC ORM
package com.denghb.eorm.impl;
import com.denghb.eorm.Eorm;
import com.denghb.eorm.EormException;
import com.denghb.eorm.support.EormSupport;
import com.denghb.eorm.support.model.Column;
import com.denghb.eorm.support.model.Table;
import com.denghb.eorm.utils.ReflectUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 核心实现
*/
public abstract class EormAbstractImpl implements Eorm {
protected Log log = LogFactory.getLog(this.getClass());
protected JdbcTemplate jdbcTemplate;
protected NamedParameterJdbcTemplate namedParameterJdbcTemplate;
public EormAbstractImpl(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
}
protected void outLog(String sql, Object... args) {
if (log.isDebugEnabled()) {
log.debug("Params:" + Arrays.toString(args));
log.debug("Execute SQL:" + sql);
}
}
protected void outErrorLog(String sql, Object... args) {
log.error("Params:" + Arrays.toString(args));
log.error("Execute SQL:" + sql);
}
@Override
public int execute(String sql, Object... args) {
outLog(sql, args);
return jdbcTemplate.update(sql, args);
}
@Override
public List select(Class clazz, String sql, Object... args) {
List list = null;
if (sql.contains(":") && null != args && 1 == args.length && !ReflectUtils.isSingleClass(args[0].getClass())) {// namedParameter
Map params = null;
Object object = args[0];
if (null == object) {
throw new EormException("args is not null");
}
if (object instanceof Map) {
params = (Map) object;
} else {
params = ReflectUtils.objectToMap(object);
}
sql = EormSupport.parse(sql, params);
outLog(sql, params);
if (ReflectUtils.isSingleClass(clazz)) {
list = namedParameterJdbcTemplate.queryForList(sql, params, clazz);
} else {
list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(clazz));
}
} else {
outLog(sql, args);
if (0 == args.length || !sql.contains("?")) {
if (ReflectUtils.isSingleClass(clazz)) {
list = jdbcTemplate.queryForList(sql, clazz);
} else {
list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(clazz));
}
} else {
if (ReflectUtils.isSingleClass(clazz)) {
list = jdbcTemplate.queryForList(sql, clazz, args);
} else {
list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(clazz), args);
}
}
}
return list;
}
@Override
public void insert(T domain) {
Table table = EormSupport.load(domain.getClass());
StringBuilder csb = new StringBuilder();
StringBuilder vsb = new StringBuilder();
final List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy