扩展String JdbcTemplate获得插入数据的主键详解编程语言

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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10255.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论