package com.atguigu.bookstore.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import com.atguigu.bookstore.dao.Dao;
import com.atguigu.bookstore.db.JDBCUtils;
import com.atguigu.bookstore.utils.ReflectionUtils;
import com.atguigu.bookstore.web.ConnectionContext;
//import com.atguigu.bookstore.web.ConnectionContext;
public class BaseDAO<T> implements Dao<T> {
private QueryRunner queryRunner = new QueryRunner();
private Class<T> clazz;
public BaseDAO() {
clazz = ReflectionUtils.getSuperGenericType(getClass());
}
long id = 0;
try {
connection = ConnectionContext.getInstance().get();
preparedStatement
= connection.
prepareStatement(sql,
Statement.
RETURN_GENERATED_KEYS);
if (args != null) {
for( int i = 0; i < args.length; i++ ){
preparedStatement.setObject(i + 1, args[i]);
}
}
preparedStatement.executeUpdate();
//获取生成的主键值
resultSet = preparedStatement.getGeneratedKeys();
if( resultSet.next()){
id = resultSet.getLong(1);
}
e.printStackTrace();
} finally {
JDBCUtils.release(resultSet, preparedStatement);
}
return id;
}
try {
connection = ConnectionContext.getInstance().get();
queryRunner.update(connection, sql, args);
e.printStackTrace();
}
}
try {
connection = ConnectionContext.getInstance().get();
// System.out.println(clazz);
return queryRunner.query(connection, sql, new BeanHandler<T>(clazz), args);
e.printStackTrace();
}
return null;
}
try {
connection = ConnectionContext.getInstance().get();
return queryRunner.query(connection, sql, new BeanListHandler<T>(clazz), args);
e.printStackTrace();
}
return null;
}
try {
connection = ConnectionContext.getInstance().get();
return (V) queryRunner.query(connection, sql, new ScalarHandler(), args);
e.printStackTrace();
}
return null;
}
try {
connection = ConnectionContext.getInstance().get();
queryRunner.batch(connection, sql, params);
e.printStackTrace();
}
}
}