简单封装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 
)

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/8013.html

(0)
上一篇 2021年7月18日
下一篇 2021年7月18日

相关推荐

发表回复

登录后才能评论