jdbcTemplate常用方法调用记录
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
/**
* JdbcTemplate工具的工具类
* 项目中有关数据插入的操作过于繁琐,所以增加此工具类
*
* @author yangsx
* @date 2018年10月30日
*/
public class JdbcUtil {
private JdbcTemplate jdbcTemplate;
private JdbcUtil() {
throw new IllegalArgumentException("Illegal instantiation!!! ");
}
private static final class JdbcUtilHolder {
private static final JdbcUtil JDBC_UTIL = new JdbcUtil();
}
public static JdbcUtil getInstance(JdbcTemplate jdbcTemplate) {
JdbcUtil instance = JdbcUtilHolder.JDBC_UTIL;
if (jdbcTemplate == null) {
throw new IllegalArgumentException("jdbcTemplate is null!!!");
}
instance.jdbcTemplate = jdbcTemplate;
return instance;
}
/**
* 插入一个对象,并返回这个对象的自增id
*
* @param sql 例如:INSERT INTO TEST_TABLE (ID, ORDER_ID) VALUES (SEQ_RE_ORDER_REFERRER.NEXTVAL, :orderId)
* @param obj 要插入的实体
* @param idAlias id列在实体类中对应的字段的字段名
* @return id
*/
public <T> int insertObjectAndGetAutoIncreaseId(final String sql, T obj, String idAlias) {
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
SqlParameterSource sqlParameterSource=new BeanPropertySqlParameterSource(obj);
KeyHolder keyHolder = new GeneratedKeyHolder();
namedParameterJdbcTemplate.update(sql, sqlParameterSource, keyHolder, new String[]{idAlias});
return keyHolder.getKey().intValue();
}
/**
* @see JdbcUtil#insertObjectAndGetAutoIncreaseId(String, Object, String) 给予默认唯一主键字段名称为"id"
*/
public <T> int insertObjectAndGetAutoIncreaseId(final String sql, T obj) {
return insertObjectAndGetAutoIncreaseId(sql, obj, "id");
}
}