JDBCTemplate工具类实战(直接用)

  • 使用JdbcTemplate需要的jar包,使用Spring的JDBCTemplate的时候先要把jar拿过来:

image

 

image

  • JdbcTemplate工具类如下:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.dao.IncorrectResultSizeDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.StatementCallback;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.jdbc.support.rowset.SqlRowSet;
import org.springframework.stereotype.Repository;

import com.bsr.app.Dao.JdbcDao;
@Repository
public class JdbcDaoImpl implements JdbcDao{
    Logger log = Logger.getLogger(this.getClass());
    @Autowired
    JdbcTemplate jdbcTemplate;
    @Override
    public  void execute(final String sql){
        jdbcTemplate.execute(sql);
    }
    @Override
    public int delete(String sql) {
        return jdbcTemplate.update(sql);
    }

    @Override
    public int add(String sql) {
        final String sqlSave = sql.toString();
        KeyHolder keyHolder = new GeneratedKeyHolder();
        jdbcTemplate.update(new PreparedStatementCreator() {
            @Override
            public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
                PreparedStatement ps = con.prepareStatement(sqlSave, Statement.RETURN_GENERATED_KEYS);
                return ps;
            }
        }, keyHolder);
        int code = keyHolder.getKey().intValue();
        return code;
    }
    @Override
    public int update(String sql) {
        return jdbcTemplate.update(sql);
    }
    @Override
    public int[] batchUpdate(String[] sql) {
        return jdbcTemplate.batchUpdate(sql);
    }
    @Override
    public List<?> queryForList(String sql) {
        
        return jdbcTemplate.queryForList(sql);
    }
    @Override
    public <T> List<T> queryForList(String sql, Class<T> elementType) {
        return jdbcTemplate.queryForList(sql, elementType);
    }
    @Override
    public SqlRowSet queryForRowSet(String sql) {
        return jdbcTemplate.queryForRowSet(sql);
    }
    @Override
    public int queryForInt(String sql) {
        int re_int = 0;
        try {
            re_int = jdbcTemplate.queryForInt(sql);
        } catch (EmptyResultDataAccessException e) {
            re_int = 0;
        } catch (IncorrectResultSizeDataAccessException e) {
            re_int = -1;
        }
        return re_int;
    }
    @Override
    public long queryForLong(String sql) {
        long re_int = 0;
        try {
            re_int = jdbcTemplate.queryForLong(sql);
        } catch (EmptyResultDataAccessException e) {
            log.info("find empty result!");
            re_int = 0;
        } catch (IncorrectResultSizeDataAccessException e) {
            log.info("find too many result!");
            re_int = -1;
        }
        return re_int;
    }
    @SuppressWarnings("rawtypes")
    @Override
    public Map queryForMap(String sql) {
        try {
            return jdbcTemplate.queryForMap(sql);
        } catch (EmptyResultDataAccessException e) {
            log.info("find empty result!");
            return new HashMap();
        } catch (IncorrectResultSizeDataAccessException e) {
            log.info("find too many result!");
            return new HashMap();
        }
    }
    @Override
    public Object queryForObject(String sql, Class<?> requiredType) {
        return jdbcTemplate.queryForObject(sql, requiredType);
    }
    @SuppressWarnings({ "unchecked", "rawtypes" })
    @Override
    public int getCount(String sql) {
        return jdbcTemplate.query(sql, new ResultSetExtractor(){
            @Override
            public Integer extractData(ResultSet rs)
                    throws SQLException, DataAccessException {
                if(rs.next()){
                    return Integer.parseInt(rs.getString(1));
                }else{
                    return 0;
                }
            }});
    }
    @SuppressWarnings({ "unchecked", "rawtypes" })
    @Override
    public List<HashMap<String, String>> getData(final String sql)
    {
        return jdbcTemplate.execute(new StatementCallback(){
            @Override
            public List doInStatement(Statement statement)
                    throws SQLException, DataAccessException {
                List<HashMap<String,String>> result = new ArrayList<HashMap<String,String>>();
                ResultSet rs = statement.executeQuery(sql);
                ResultSetMetaData rsmd = rs.getMetaData();
                while(rs.next())
                {
                    HashMap<String,String> map = new HashMap<String,String>();
                    for(int i=0;i<rsmd.getColumnCount();i++)
                    {
                        map.put(rsmd.getColumnLabel(i+1), rs.getString(i+1));
                        
                    }
                    
                    result.add(map);
                }
                return result;
            }
            
        });
    }

}
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值