You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

231 lines
6.3 KiB
Java

package com.supervision.util.mybatis;
import com.supervision.util.mybatis.RowMapperStatementBuilder;
import org.apache.ibatis.exceptions.TooManyResultsException;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* mybatissql
*/
@Component
public class RowSqlMapper {
private final RowMapperStatementBuilder mapperStatementBuilder;
private final SqlSession sqlSession;
/**
* MappedStatement
*
* @param sqlSession
*/
public RowSqlMapper(SqlSession sqlSession) {
this.sqlSession = sqlSession;
this.mapperStatementBuilder = new RowMapperStatementBuilder(sqlSession.getConfiguration());
}
/**
* List
*
* @param list List
* @param <T>
* @return
*/
private <T> T getOne(List<T> list) {
if (list.size() == 1) {
return list.get(0);
} else if (list.size() > 1) {
throw new TooManyResultsException("Expected one result (or null) to be returned by selectOne(), but found: " + list.size());
} else {
return null;
}
}
/**
*
*
* @param sql sql
* @return
*/
public Map<String, Object> selectOne(String sql) {
List<Map<String, Object>> list = selectList(sql);
return getOne(list);
}
/**
*
*
* @param sql sql
* @param value
* @return
*/
public Map<String, Object> selectOne(String sql, Object value) {
List<Map<String, Object>> list = selectList(sql, value);
return getOne(list);
}
/**
*
*
* @param sql sql
* @param resultType
* @param <T>
* @return
*/
public <T> T selectOne(String sql, Class<T> resultType) {
List<T> list = selectList(sql, resultType);
return getOne(list);
}
/**
*
*
* @param sql sql
* @param value
* @param resultType
* @param <T>
* @return
*/
public <T> T selectOne(String sql, Object value, Class<T> resultType) {
List<T> list = selectList(sql, value, resultType);
return getOne(list);
}
/**
* List<Map<String, Object>>
*
* @param sql sql
* @return
*/
public List<Map<String, Object>> selectList(String sql) {
String msId = mapperStatementBuilder.select(sql);
return sqlSession.selectList(msId);
}
/**
* List<Map<String, Object>>
*
* @param sql sql
* @param value
* @return
*/
public List<Map<String, Object>> selectList(String sql, Object value) {
Class<?> parameterType = value != null ? value.getClass() : null;
String msId = mapperStatementBuilder.selectDynamic(sql, parameterType);
return sqlSession.selectList(msId, value);
}
/**
*
*
* @param sql sql
* @param resultType
* @param <T>
* @return
*/
public <T> List<T> selectList(String sql, Class<T> resultType) {
String msId;
if (resultType == null) {
msId = mapperStatementBuilder.select(sql);
} else {
msId = mapperStatementBuilder.select(sql, resultType);
}
return sqlSession.selectList(msId);
}
/**
*
*
* @param sql sql
* @param value
* @param resultType
* @param <T>
* @return
*/
public <T> List<T> selectList(String sql, Object value, Class<T> resultType) {
String msId;
Class<?> parameterType = value != null ? value.getClass() : null;
if (resultType == null) {
msId = mapperStatementBuilder.selectDynamic(sql, parameterType);
} else {
msId = mapperStatementBuilder.selectDynamic(sql, parameterType, resultType);
}
return sqlSession.selectList(msId, value);
}
/**
*
*
* @param sql sql
* @return
*/
public int insert(String sql) {
String msId = mapperStatementBuilder.insert(sql);
return sqlSession.insert(msId);
}
/**
*
*
* @param sql sql
* @param value
* @return
*/
public int insert(String sql, Object value) {
Class<?> parameterType = value != null ? value.getClass() : null;
String msId = mapperStatementBuilder.insertDynamic(sql, parameterType);
return sqlSession.insert(msId, value);
}
/**
*
*
* @param sql sql
* @return
*/
public int update(String sql) {
String msId = mapperStatementBuilder.update(sql);
return sqlSession.update(msId);
}
/**
*
*
* @param sql sql
* @param value
* @return
*/
public int update(String sql, Object value) {
Class<?> parameterType = value != null ? value.getClass() : null;
String msId = mapperStatementBuilder.updateDynamic(sql, parameterType);
return sqlSession.update(msId, value);
}
/**
*
*
* @param sql sql
* @return
*/
public int delete(String sql) {
String msId = mapperStatementBuilder.delete(sql);
return sqlSession.delete(msId);
}
/**
*
*
* @param sql sql
* @param value
* @return
*/
public int delete(String sql, Object value) {
Class<?> parameterType = value != null ? value.getClass() : null;
String msId = mapperStatementBuilder.deleteDynamic(sql, parameterType);
return sqlSession.delete(msId, value);
}
}