×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: Java
Posted by: Jiang BigLong
Added: Oct 29, 2016 7:23 AM
Views: 82
Tags: no tags
BaseDAO
  1. package com.atguigu.bookstore.dao.impl;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.Statement;
  7. import java.util.List;
  8.  
  9. import org.apache.commons.dbutils.QueryRunner;
  10. import org.apache.commons.dbutils.handlers.BeanHandler;
  11. import org.apache.commons.dbutils.handlers.BeanListHandler;
  12. import org.apache.commons.dbutils.handlers.ScalarHandler;
  13.  
  14. import com.atguigu.bookstore.dao.Dao;
  15. import com.atguigu.bookstore.db.JDBCUtils;
  16. import com.atguigu.bookstore.utils.ReflectionUtils;
  17. import com.atguigu.bookstore.web.ConnectionContext;
  18. //import com.atguigu.bookstore.web.ConnectionContext;
  19.  
  20. public class BaseDAO<T> implements Dao<T> {
  21.        
  22.         private QueryRunner queryRunner = new QueryRunner();
  23.        
  24.         private Class<T> clazz;
  25.  
  26.         public BaseDAO() {
  27.                 clazz = ReflectionUtils.getSuperGenericType(getClass());
  28.         }
  29.        
  30.  
  31.         public long insert(String sql, Object... args) {
  32.                 long id = 0;
  33.                 Connection connection = null;
  34.                 PreparedStatement preparedStatement = null;
  35.                 ResultSet resultSet = null;
  36.                 try {
  37.                         connection = ConnectionContext.getInstance().get();
  38.                         preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
  39.                         if (args != null) {
  40.                                 for( int i = 0; i < args.length; i++ ){
  41.                                         preparedStatement.setObject(i + 1, args[i]);
  42.                                 }
  43.                         }
  44.                         preparedStatement.executeUpdate();
  45.                        
  46.                         //获取生成的主键值
  47.                         resultSet = preparedStatement.getGeneratedKeys();
  48.                         if( resultSet.next()){
  49.                                 id = resultSet.getLong(1);
  50.                         }
  51.                 } catch (Exception e) {
  52.                         e.printStackTrace();
  53.                 } finally {
  54.                         JDBCUtils.release(resultSet, preparedStatement);
  55.                        
  56.                 }
  57.                 return id;
  58.         }
  59.  
  60.         public void update(String sql, Object... args) {
  61.                 Connection connection = null;
  62.                 try {
  63.                         connection = ConnectionContext.getInstance().get();
  64.                         queryRunner.update(connection, sql, args);
  65.                 } catch (Exception e) {
  66.                         e.printStackTrace();
  67.                 }
  68.         }
  69.  
  70.         public T query(String sql, Object... args) {
  71.                 Connection connection = null;
  72.                 try {
  73.                         connection = ConnectionContext.getInstance().get();
  74. //                      System.out.println(clazz);
  75.                         return queryRunner.query(connection, sql, new BeanHandler<T>(clazz), args);
  76.                        
  77.                 } catch (Exception e) {
  78.                         e.printStackTrace();
  79.                 }
  80.                 return null;
  81.         }
  82.  
  83.         public List<T> queryForList(String sql, Object... args) {
  84.                 Connection connection = null;
  85.                 try {
  86.                         connection = ConnectionContext.getInstance().get();
  87.                         return queryRunner.query(connection, sql, new BeanListHandler<T>(clazz), args);
  88.                 } catch (Exception e) {
  89.                         e.printStackTrace();
  90.                 }
  91.                 return null;
  92.         }
  93.  
  94.         public <V> V getSingleVal(String sql, Object... args) {
  95.                 Connection connection = null;
  96.                 try {
  97.                         connection = ConnectionContext.getInstance().get();
  98.                         return (V) queryRunner.query(connection, sql, new ScalarHandler(), args);
  99.                 } catch (Exception e) {
  100.                         e.printStackTrace();
  101.                 }
  102.                 return null;
  103.         }
  104.  
  105.         public void batch(String sql, Object[]... params) {
  106.                 Connection connection = null;
  107.                 try {
  108.                         connection = ConnectionContext.getInstance().get();
  109.                         queryRunner.batch(connection, sql, params);
  110.                 } catch (Exception e) {
  111.                         e.printStackTrace();
  112.                 }
  113.         }
  114.  
  115. }
  116.