将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