scala连接mysql工具类_scala数据库工具类

import java.sql.ResultSet

import java.sql.PreparedStatement

import java.sql.Connection

import java.sql.Statement/**

* 数据操作工具类

* 语言:scala

* 时间:2016-07-09*/private[org] abstract class BaseDao[T](conn: Connection) {/**

* 插入数据

* @param sql SQL语句

* @param params 参数列表

* @param convert 主键转换方法

* @return 转换结果*/protected def insert[T](sql: String, params: Array[Any])(convert: ResultSet=> T) ={

val pstmt=conn prepareStatement (sql, Statement.RETURN_GENERATED_KEYS)

setParameters(pstmt, params)

pstmt.executeUpdate

val rs=pstmt.getGeneratedKeys

rs.next

convert(rs)

}/**

* 更新数据

* @param sql SQL语句

* @param params 参数列表

* @return 影响行数*/protected def update(sql: String, params: Array[Any])=createStatement(sql, params).executeUpdate/**

* 查询对象

* @param sql SQL语句

* @param params 参数列表

* @param convert 结果集转换方法

* @return 泛型对象*/protected def queryForObject[T](sql: String, params: Array[Any])(convert: ResultSet=> T) ={

val rs=query(sql, params)if(rs.next) {

val result=convert(rs)if(rs.next) {

val ex= newResultsTooManyExceptionthrowex

}elseSome(result)

}elseNone

}/**

* 查询对象列表

* @param sql SQL语句

* @param params 参数列表

* @param convert 结果集转换方法

* @return 泛型对象列表*/protected def queryForList[T](sql: String, 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

}

}/**

* 结果值读取器*/object ResultValueGetter {/**

* 查询结果值

* @param rs 结果集

* @param getResult 获得单个值结果的方法

* @return 值*/def getResultValue[T](rs: ResultSet)(getResult: ResultSet=> T) ={

val result=getResult(rs)if (rs.wasNull) None elseSome(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 getDoubleValue(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 getDoubleValue(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.") {}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scala 中使用 Jackson 库进行 JSON 数据的反序列化操作时,可以使用 `mapper.readValue` 方法。如果需要反序列化的 JSON 数据中包含自定义的 Java 类,可以通过在 Scala 中使用 Java 类的方式来实现。 具体实现方法如下: 1. 定义 Java 类 首先,在 Scala 代码中使用 `mapper.readValue` 方法前,需要先定义一个 Java 类来表示需要反序列化的 JSON 数据中的对象。例如,下面的代码定义了一个 `Person` 类: ```java public class Person { private String name; private int age; // getters and setters } ``` 2. 使用 Scala 调用 Java 类 在 Scala 中,可以通过 `JavaConverters` 工具类来将 Java 类转换成 Scala 类。例如,下面的代码将 `Person` 类转换成了 `PersonScala` 类: ```scala import scala.collection.JavaConverters._ case class PersonScala(name: String, age: Int) val json = """{"name": "Alice", "age": 30}""" val mapper = new ObjectMapper() val person = mapper.readValue(json, classOf[Person]).asScala val personScala = PersonScala(person.name, person.age) ``` 注意,在调用 `mapper.readValue` 方法时,需要将 `classOf[Person]` 作为第二个参数传入,以告诉 Jackson 库需要将 JSON 数据转换成 `Person` 类。 3. 使用 Scala 类 现在,`PersonScala` 类就可以在 Scala 代码中使用了。例如,下面的代码创建了一个 `PersonScala` 对象并打印出其属性: ```scala val personScala = PersonScala("Bob", 25) println(s"Name: ${personScala.name}, Age: ${personScala.age}") ``` 输出结果为: ``` Name: Bob, Age: 25 ``` 这样,就可以在 Scala 中使用 Java 自定义类了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值