xf616510229
10/30/2018 - 8:19 AM

JdbcTemplate

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");
    }
}