com.github.eugeneheen.mangosteen.jdbctemplate.repository.AbstratcJdbcOperations Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mangosteen-jdbctemplate-spring-boot-starter Show documentation
Show all versions of mangosteen-jdbctemplate-spring-boot-starter Show documentation
Mangosteen JdbcTemplate Starter Project For Spring Boot
The newest version!
package com.github.eugeneheen.mangosteen.jdbctemplate.repository;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import java.util.List;
import java.util.Map;
/**
* 山竹工具包,基于Spring的JdbcTemplate,封装JDBC基础操作接口定义
* @author chenzhiheng
* @date 2021年07月31日
*/
public abstract class AbstratcJdbcOperations {
/**
* RowMapper转换器
*
* @param mappedClass 待转换的结果类型
* @param 任意类型
* @return BeanPropertyRowMapper
*/
protected RowMapper convertor(Class mappedClass) {
return new BeanPropertyRowMapper(mappedClass);
}
/**
* SqlParameterSource转换器
*
* @param bean 待转换的参数值类型
* @return BeanPropertySqlParameterSource
*/
protected SqlParameterSource convertor(Object bean) {
return new BeanPropertySqlParameterSource(bean);
}
/**
* SqlParameterSource转换器
*
* @param values 待转换的参数值类型
* @return MapSqlParameterSource
*/
protected SqlParameterSource convertor(Map values) {
return new MapSqlParameterSource(values);
}
/**
* 更新数据操作,适用于INSERT、UPDATE、DELETE
*
* @param nameSql 命名语法SQL;例如:(UPDATE users SET name = :userName)
* @param bean Bean类型的属性名,替换命名语法参数
* @return 更新数据条数
*/
protected abstract int update(String nameSql, Object bean) throws DataAccessException;
/**
* 更新数据操作,适用于INSERT、UPDATE、DELETE
*
* @param nameSql 命名语法SQL;例如:(UPDATE users SET name = :userName)
* @param paramMap Map类型的key,替换命名语法参数
* @return 更新数据条数
*/
protected abstract int update(String nameSql, Map paramMap) throws DataAccessException;
/**
* 更新数据操作,适用于INSERT、UPDATE、DELETE
*
* @param sql 占位符语法SQL;例如:(UPDATE users SET name = ?)
* @param args 数组类型,替换占位符参数
* @return 更新数据条数
*/
protected abstract int commonUpdate(String sql, Object... args) throws DataAccessException;
/**
* 查询匹配条件的唯一一条数据
*
* @param nameSql 命名语法SQL;例如:(SELECT * FROM users WHERE name = :userName, age = :age)
* @param paramMap Map类型的key,替换命名参数
* @param requiredType 返回的Bean类型
* @return 唯一的结果,Bean类型为requiredType
*/
protected abstract T selectObject(String nameSql, Map paramMap, Class requiredType) throws DataAccessException;
/**
* 查询匹配条件的唯一一条数据
*
* @param nameSql 命名语法SQL;例如:(SELECT * FROM users WHERE name = :userName, age = :age)
* @param bean Bean类型的属性名,替换命名参数
* @param requiredType 返回的Bean类型
* @return 唯一的结果,Bean类型为requiredType
*/
protected abstract T selectObject(String nameSql, Object bean, Class requiredType) throws DataAccessException;
/**
* 查询匹配条件的唯一一条数据
*
* @param nameSql 命名语法SQL;例如:(SELECT * FROM users WHERE name = :userName, age = :age)
* @param paramMap Map类型的key,替换命名参数
* @return 唯一的Map类型结果
*/
protected abstract Map selectMap(String nameSql, Map paramMap) throws DataAccessException;
/**
* 查询匹配条件的唯一一条数据
*
* @param nameSql 命名语法SQL;例如:(SELECT * FROM users WHERE name = :userName, age = :age)
* @param bean Bean类型的属性名,替换命名参数
* @return 唯一的Map类型结果
*/
protected abstract Map selectMap(String nameSql, Object bean) throws DataAccessException;
/**
* 查询匹配条件的所有数据
*
* @param nameSql 命名语法SQL;例如:(SELECT * FROM users WHERE name = :userName, age = :age)
* @param paramMap Map类型的key,替换命名参数
* @return 包含Map的List结果列表
*/
protected abstract List