Why not just keep using iBatis ? This is Java, after all (and therefore can be used from Scala). I still use Spring JDBC as my DAO layer.
Regarding scala specifics; you can add @BeanProperty annotation to generate getters / seters, and then declare a protection method for null :
@BeanProperty var injectedXyz : String def xyz : Option[String] = Option(injectedXyz)
Admittedly, this is not very convenient (i.e. requires an additional template). But I didn’t see anything like the widely used scala DAO level (for SQL)
source share