起步
依赖
- sbt
libraryDependencies += "com.helloscala.fusion" %% "fusion-mybatis" % "2.0.6"
- Maven
<dependency> <groupId>com.helloscala.fusion</groupId> <artifactId>fusion-mybatis_2.12</artifactId> <version>2.0.6</version> </dependency>
- Gradle
dependencies { compile group: 'com.helloscala.fusion', name: 'fusion-mybatis_2.12', version: '2.0.6' }
示例
FusionMyBatisTest
演示了一个典型的 MyBatis 数据库操作。
class FusionMybatisTest extends ScalaTestWithActorTestKit with FusionFunSuiteLike {
test("testSqlSession") {
val sqlSessionFactory = FusionMybatis(system).component
sqlSessionFactory should not be null
// auto commit is false
val session = sqlSessionFactory.openSession()
try {
session should not be null
} finally {
session.close()
}
}
test("file insert") {
val sqlSessionFactory = FusionMybatis(system).component
// using函数将自动提交/回滚(异常抛出时)
sqlSessionFactory.transactional { session =>
val fileMapper = session.getMapper(classOf[FileMapper])
val file = CFile("file_id", "文件", "/32/234242.jpg", 98234)
fileMapper.insert(file)
// session.commit()
// throw new SQLException()
}
}
test("file list") {
val sqlSessionFactory = FusionMybatis(system).component
sqlSessionFactory.transactional { session =>
val fileMapper = session.getMapper(classOf[FileMapper])
val list = fileMapper.list(10)
list.forEach(new Consumer[CFile] {
override def accept(t: CFile): Unit = println(t)
})
list should not be empty
}
}
test("file page") {
val sqlSessionFactory = FusionMybatis(system).component
// val result = sqlSessionFactory.transactional { session =>
// val fileMapper = session.getMapper(classOf[FileMapper])
// val req = new Page[CFile](0, 10)
// fileMapper.selectPage(req, null)
// }
val result = sqlSessionFactory.mapperTransactional[FileMapper, IPage[CFile]] { fileMapper =>
val req = new Page[CFile](0, 10)
fileMapper.selectPage(req, null)
}
result.getRecords should not be empty
result.getRecords.forEach(new Consumer[CFile] {
override def accept(t: CFile): Unit = println(t)
})
println(result)
}
}
FileMapper
实现了 BaseMapper[T]
接口,它是MyBatis-plus对MyBatis提供的增强:
trait FileMapper extends BaseMapper[CFile] {
def list(size: Int): java.util.List[CFile]
}
CFile
case class CFile(
@BeanProperty var fileId: String = "",
@BeanProperty var fileSubject: String = "",
@BeanProperty var fileUrl: String = "",
@BeanProperty var duration: Int = 0,
@BeanProperty var tableAutoUptime: LocalDateTime = LocalDateTime.now())
配置与初始化
application.conf
文件中
fusion.jdbc {
default {
poolName = "fusion"
jdbcUrl = "jdbc:postgresql://localhost:55432/fusion_dev"
username = "devuser"
password = "devPass.2019"
connectionTestQuery = "select 1;"
maximumPoolSize = 2
autoCommit = true
}
}
fusion.mybatis {
default = {
fusion-jdbc-source = fusion.jdbc.default
configuration {
package-names = ["fusion.mybatis.mapper"]
}
}
}
2.0.6