我的代码

package com.devnn.base;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * Created by devnn on 16/9/28.
 */
public abstract class BaseDAO<T> {

    private DBManager dbManager;

    private String jdbc_url = "jdbc:mysql://127.0.0.1:3306/bcs_test?Unicode=true&characterEncoding=utf8";

    private String username = "blog_user";

    private String password = "[email protected]";

    public BaseDAO() {
    }
    public BaseDAO(String jdbc_url, String username, String password) {
        this.jdbc_url = jdbc_url;
        this.username = username;
        this.password = password;
    }

    public SQLDataResult<T> executeQuery(SqlDataParser<T> sqlDataParser) throws SQLException {
        if (dbManager == null) {
            return new SQLDataResult<>("call prepareStatement(sql) first!");
        }
        List<T> list;
        SQLDataResult<T> sqlDataResult = new SQLDataResult<>();
        ResultSet resultSet = dbManager.executeQuery();
        list = sqlDataParser.parse(resultSet);
        sqlDataResult.setSuccess(true);
        sqlDataResult.setData(list);
        dbManager.closeConnection();
        return sqlDataResult;

    }



    public SQLDataResult<T> executeUpdate() {
        if (dbManager == null) {
            return new SQLDataResult<>("call prepareStatement(sql) first!");
        }
        SQLDataResult<T> sqlDataResult = new SQLDataResult<>();
        UpdateResult updateResult;
        try {
             updateResult = dbManager.executeUpdate();
            if (updateResult.getAffectedNum() >= 1) {
                sqlDataResult.setSuccess(true);
                sqlDataResult.setDataKey(updateResult.getGeneratedKey());
            }
            sqlDataResult.setUpdateNum(updateResult.getAffectedNum());
        } catch (SQLException e) {
            e.printStackTrace();
            sqlDataResult.setSuccess(false);
            sqlDataResult.setData(null);
            sqlDataResult.setReason("sql execute or parse error:" + e.getMessage());
        }
        dbManager.closeConnection();
        return sqlDataResult;

    }


    public synchronized PreparedStatement prepareStatementByQuery(String sql) throws SQLException {
        if (dbManager == null) {
            dbManager = new DBManager();
        }
        return dbManager.prepareStatementByQuery(sql, jdbc_url, username, password);
    }

    public synchronized PreparedStatement prepareStatementByUpdate(String sql) throws SQLException {
        if (dbManager == null) {
            dbManager = new DBManager();
        }
        return dbManager.prepareStatementByUpdate(sql, jdbc_url, username, password);
    }


    public SQLDataResult<T> getSqlDataResultForError(String reason) {
        SQLDataResult<T> sqlDataResult = new SQLDataResult();
        sqlDataResult.setSuccess(false);
        sqlDataResult.setReason(reason);
        return sqlDataResult;
    }

    protected   SQLDataResult<T>  handleException(Exception e){
        e.printStackTrace();
        dbManager.closeConnection();
        return getSqlDataResultForError("exception message:"+e.getMessage());
    }

}

猜你喜欢

转载自blog.csdn.net/devnn/article/details/54411432