public class DBUtil {
public static Connection getConnection() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/java";
String user = "root";
String pass = "123";
Connection conn = null;
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("注册失败");
}
try {
conn = DriverManager.getConnection(url, user, pass);
} catch (SQLException e) {
System.out.println("数据库连接失败");
}
return conn;
}
public static void closeAll(ResultSet rs, Statement stmt, Connection conn) {
try {
if (rs != null) {
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
}finally{
rs = null;
stmt = null;
conn = null;
}
}
}
public class JDBCTempleate {
static Connection conn = null;
static PreparedStatement pstmt = null;
static ResultSet rs = null;
/*对数据库的增加、删除、修改*/
public static void update(String sql,Object ...args){
conn = DBUtil.getConnection();
try {
pstmt = conn.prepareStatement(sql);
/*设置sql的参数*/
for(int i = 0;i<args.length;i++){
pstmt.setObject(i+1, args[i]);
}
pstmt.executeUpdate();
} catch (SQLException e) {
}finally{
DBUtil.closeAll(rs, pstmt, conn);
}
}
/*第一个T是静态方法的泛型定义,因为在静态方法中不能使用类泛型,但可以使用方法泛型*/
public static<E> List<E> query(String sql,RowMapper <E>rm,Object ...args)
{
List <E>list = new ArrayList<E>();
conn = DBUtil.getConnection();
try {
pstmt = conn.prepareStatement(sql);
/*设置sql的参数*/
for(int i = 0;i<args.length;i++){
pstmt.setObject(i+1, args[i]);
}
rs = pstmt.executeQuery();
while(rs.next()){
E e = rm.mapRow(rs);
list.add(e);
}
} catch (SQLException e) {
}finally{
DBUtil.closeAll(rs, pstmt, conn);
}
return list;
}
public static<T>T queryForObject(String sql,RowMapper <T>rm,Object ...args){
T t = query(sql,rm,args).get(0);
return t;
}
}
public interface RowMapper <T>{
/*通过rs当前的游标获取当前行的数据,并封装成T对象返回*/
public T mapRow(ResultSet rs)throws SQLException;
}
public static Connection getConnection() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/java";
String user = "root";
String pass = "123";
Connection conn = null;
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("注册失败");
}
try {
conn = DriverManager.getConnection(url, user, pass);
} catch (SQLException e) {
System.out.println("数据库连接失败");
}
return conn;
}
public static void closeAll(ResultSet rs, Statement stmt, Connection conn) {
try {
if (rs != null) {
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
}finally{
rs = null;
stmt = null;
conn = null;
}
}
}
public class JDBCTempleate {
static Connection conn = null;
static PreparedStatement pstmt = null;
static ResultSet rs = null;
/*对数据库的增加、删除、修改*/
public static void update(String sql,Object ...args){
conn = DBUtil.getConnection();
try {
pstmt = conn.prepareStatement(sql);
/*设置sql的参数*/
for(int i = 0;i<args.length;i++){
pstmt.setObject(i+1, args[i]);
}
pstmt.executeUpdate();
} catch (SQLException e) {
}finally{
DBUtil.closeAll(rs, pstmt, conn);
}
}
/*第一个T是静态方法的泛型定义,因为在静态方法中不能使用类泛型,但可以使用方法泛型*/
public static<E> List<E> query(String sql,RowMapper <E>rm,Object ...args)
{
List <E>list = new ArrayList<E>();
conn = DBUtil.getConnection();
try {
pstmt = conn.prepareStatement(sql);
/*设置sql的参数*/
for(int i = 0;i<args.length;i++){
pstmt.setObject(i+1, args[i]);
}
rs = pstmt.executeQuery();
while(rs.next()){
E e = rm.mapRow(rs);
list.add(e);
}
} catch (SQLException e) {
}finally{
DBUtil.closeAll(rs, pstmt, conn);
}
return list;
}
public static<T>T queryForObject(String sql,RowMapper <T>rm,Object ...args){
T t = query(sql,rm,args).get(0);
return t;
}
}
public interface RowMapper <T>{
/*通过rs当前的游标获取当前行的数据,并封装成T对象返回*/
public T mapRow(ResultSet rs)throws SQLException;
}