擴展String JdbcTemplate獲得插入數據的主鍵

ew45 9年前發布 | 2K 次閱讀 Java

String自帶的獲得主鍵方法比較繁瑣,所以自己寫了一個方法來和大家分享

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.ParameterDisposer; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.core.PreparedStatementSetter; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.jdbc.support.KeyHolder;

/**

  • 數據存取適配器
  • @author David Day */ public class JdbcTemplateAdapter extends JdbcTemplate {

    public JdbcTemplateAdapter() {

     super();
    

    }

    public JdbcTemplateAdapter(DataSource ds) {

     super(ds);
    

    }

    /**

    • 增加并且獲取主鍵
    • @param sql sql語句
    • @param params 參數列表
    • @return 主鍵 */ public Object insertAndGetKey(final String sql, final Object... params) { logger.debug("Executing SQL update and returning generated keys");

      final KeyHolder key = new GeneratedKeyHolder();

      update(new PreparedStatementCreator() {

       public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
           PreparedStatement ps = con.prepareStatement(sql, 
                   PreparedStatement.RETURN_GENERATED_KEYS);
           PreparedStatementSetter pss = newArgPreparedStatementSetter(params);
           try {
               if (pss != null) {
                   pss.setValues(ps);
               }
           } finally {
               if (pss instanceof ParameterDisposer) {
                   ((ParameterDisposer) pss).cleanupParameters();
               }
           }
           return ps;
       }
      
      

      }, key);

      return key.getKey(); }

}</pre>

 本文由用戶 ew45 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!