设为首页 加入收藏

TOP

scala数据库工具类(二)
2017-10-10 12:11:56 】 浏览:8145
Tags:scala 数据库 工具
ing, params: Array[Any])(convert: ResultSet
=> T) = { val rs = query(sql, params) var results = List[T]() while (rs.next) { results = results :+ convert(rs) } results } /** * 查询对象映射 * @param sql SQL语句 * @param params 参数列表 * @param convert 结果集转换方法 * @return 泛型对象映射 */ protected def queryForMap[K, V](sql: String, params: Array[Any])(convert: ResultSet => (K, V)) = { val rs = query(sql, params) var results = Map[K, V]() while (rs.next) { results += convert(rs) } results } /** * 查询 * @param sql SQL语句 * @param params 参数列表 */ private def query(sql: String, params: Array[Any]) = createStatement(sql, params).executeQuery /** * 创建声明 * @param sql SQL语句 * @param params 参数列表 */ private def createStatement(sql: String, params: Array[Any]) = { val pstmt = conn prepareStatement sql setParameters(pstmt, params) pstmt } /** * 插入参数 * @param pstmt 预编译声明 * @param params 参数列表 */ private def setParameters(pstmt: PreparedStatement, params: Array[Any]) { for (i <- 1 to params.length) { pstmt setObject (i, params(i - 1)) } } } /** * 结果值读取器 */ object ResultValueGetter { /** * 查询结果值 * @param rs 结果集 * @param getResult 获得单个值结果的方法 * @return 值 */ def getResultValue[T](rs: ResultSet)(getResult: ResultSet => T) = { val result = getResult(rs) if (rs.wasNull) None else Some(result) } /** * 获得字符串结果的值 * @param rs 结果集 * @param colNum 列号 */ def getStringValue(rs: ResultSet, colNum: Int) = getResultValue(rs) { _ getString colNum } /** * 获得字符串结果的值 * @param rs 结果集 * @param colNum 列号 */ def getIntValue(rs: ResultSet, colNum: Int) = getResultValue(rs) { _ getInt colNum } /** * 获得字符串结果的值 * @param rs 结果集 * @param colNum 列号 */ def getLongValue(rs: ResultSet, colNum: Int) = getResultValue(rs) { _ getLong colNum } /** * 获得字符串结果的值 * @param rs 结果集 * @param colNum 列号 */ def getDoubleva lue(rs: ResultSet, colNum: Int) = getResultValue(rs) { _ getDouble colNum } /** * 获得字符串结果的值 * @param rs 结果集 * @param colNum 列号 */ def getBooleanValue(rs: ResultSet, colNum: Int) = getResultValue(rs) { _ getBoolean colNum } /** * 获得字符串结果的值 * @param rs 结果集 * @param colNum 列号 */ def getTimestampValue(rs: ResultSet, colNum: Int) = getResultValue(rs) { _ getTimestamp colNum } /** * 获得字符串结果的值 * @param rs 结果集 * @param colName 列名 */ def getStringValue(rs: ResultSet, colName: String) = getResultValue(rs) { _ getString colName } /** * 获得字符串结果的值 * @param rs 结果集 * @param colName 列名 */ def getIntValue(rs: ResultSet, colName: String) = getResultValue(rs) { _ getInt colName } /** * 获得字符串结果的值 * @param rs 结果集 * @param colName 列名 */ def getLongValue(rs: ResultSet, colName: String) = getResultValue(rs) { _ getLong colName } /** * 获得字符串结果的值 * @param rs 结果集 * @param colName 列名 */ def getDoubleva lue(rs: ResultSet, colName: String) = getResultValue(rs) { _ getDouble colName } /** * 获得字符串结果的值 * @param rs 结果集 * @param colName 列名 */ def getBooleanValue(rs: ResultSet, colName: String) = getResultValue(rs) { _ getBoolean colName } /** * 获得字符串结果的值 * @param rs 结果集 * @param colName 列名 */ def getTimestampValue(rs: ResultSet, colName: String) = getResultValue(rs) { _ getTimestamp colName } } /** * 结果太多异常 */ class ResultsTooManyException extends Exception("Returned too many results.") {}
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Scalaz(46)- scalaz-stream 基.. 下一篇Cats(2)- Free语法组合,Copro..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目