简单封装Spring的SimpleJdbcTemplate

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

将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
)

标签: 代码

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:java 程序计时

下一篇:android实现的AES加密