簡單封裝Spring的SimpleJdbcTemplate
將Scala應用于項目存在一定的風險。使用Scala更多的是輔助Java,做一些獨立性相對較高的模塊。例如將某個模塊以jar的形式提供服務等等。而Sprin g是項目中用得最多的開源框架。在Java代碼中混合Scala的一個麻煩是:對象經常需要在這兩者之間進行轉換,而轉換是需要消耗資源的。這段代碼簡單封裝Spri ng的SimpleJdbcTemplate,以提供一個友好的方式訪問JDBC。
JDBC操作
import java.sql.ResultSet
import org.springframework.jdbc.core.simple.ParameterizedRowMapper
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate
import scala.collection.mutable.ListBuffer
object RichJdbcTemplate {
val jdbc :SimpleJdbcTemplate = ...
def query4List[T](sql: String, process: ResultSet => T, params:Any*):List[T] = {
val buff = new ListBuffer[T]
jdbc.query(
sql,
new ParameterizedRowMapper[String]() {
def mapRow(rs:ResultSet, n: Int) = {
buff += process(rs)
null
}
},
params.toArray
)
buff.toList
}
def update(sql:String, params:Any*) : Int = {
jdbc.update(sql, params.toArray)
}
def batchUpdate(sqls:Array[String]) : Array[Int] = {
jdbc.getJdbcOperations.batchUpdate(sqls)
}
def batchUpdate(sqls:String*) : Array[Int] = {
jdbc.getJdbcOperations.batchUpdate(sqls.toArray)
}
def query4Long(sql: String, params:Any*):Long = jdbc.queryForLong(sql, params.toArray)
def query4Int(sql: String, params:Any*):Int = jdbc.queryForInt(sql, params.toArray)
def query4String(sql: String, params:Any*) = jdbc.queryForObject(sql, classOf[String], params.toArray)
}
例子:
val list = RichJdbcTemplate.query4List[Long](
"select c.id from custom c where c.name=? and c.age=?",
rs => rs.getLong(1),
"abc", 20
)
val list = RichJdbcTemplate.query4List[Custom](
"select * from custom c where c.age=?",
rs => {
val c = new Custom
c.id = rs.getLong(1)
c.name = rs.getString(2)
c.age = rs.getInteger(3)
c
},
20
)
本文由用戶 MicSever 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!