spring的jdbctemplate的crud的基类dao



public abstract class BaseDao<T> {

    private JdbcTemplate jdbcTemplate;

    // 构造函数,用于注入JdbcTemplate
    public BaseDao(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    // 插入数据
    public int insert(T entity) {
        String sql = getInsertSql(); // 需要子类实现具体的SQL语句
        Object[] args = getInsertArgs(entity); // 需要子类根据实体类提供参数
        return jdbcTemplate.update(sql, args);
    }

    // 更新数据
    public int update(T entity) {
        String sql = getUpdateSql(); // 需要子类实现具体的SQL语句
        Object[] args = getUpdateArgs(entity); // 需要子类根据实体类提供参数
        return jdbcTemplate.update(sql, args);
    }

    // 删除数据
    public int delete(T entity) {
        String sql = getDeleteSql(); // 需要子类实现具体的SQL语句
        Object[] args = getDeleteArgs(entity); // 需要子类根据实体类提供参数
        return jdbcTemplate.update(sql, args);
    }

    // 查询单条数据
    public T findById(Object id) {
        String sql = getFindByIdSql(); // 需要子类实现具体的SQL语句
        return jdbcTemplate.queryForObject(sql, new Object[]{id}, getRowMapper());
    }

    // 查询所有数据
    public List<T> findAll() {
        String sql = getFindAllSql(); // 需要子类实现具体的SQL语句
        return jdbcTemplate.query(sql, getRowMapper());
    }

    // 抽象方法,需要子类实现
    protected abstract String getInsertSql();
    protected abstract Object[] getInsertArgs(T entity);
    protected abstract String getUpdateSql();
    protected abstract Object[] getUpdateArgs(T entity);
    protected abstract String getDeleteSql();
    protected abstract Object[] getDeleteArgs(T entity);
    protected abstract String getFindByIdSql();
    protected abstract String getFindAllSql();
    protected abstract RowMapper<T> getRowMapper();
}

这个代码是一个基于Spring的JdbcTemplate的CRUD基类Dao的实现框架。它定义了一些基本的方法如插入、更新、删除、根据ID查询和查询所有。这些方法的实现依赖于子类提供的SQL语句和参数。注意,这里使用了抽象方法`getInsertSql()`, `getInsertArgs(T entity)`, 等,这些方法需要子类根据具体的实体类和数据库表结构来实现。同时,也定义了`getRowMapper()`方法,该方法用于将SQL查询结果映射为Java对象,同样需要子类实现。这样的设计使得BaseDao类可以适用于多种不同的实体类和数据库表,提高了代码的复用性和灵活性。