博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Play Framework 2.5 整合 MyBatis
阅读量:6332 次
发布时间:2019-06-22

本文共 1761 字,大约阅读时间需要 5 分钟。

  hot3.png

因为不想用 Play 官方支持的一些 ORM 框架,笔者开始在网上查询 Play 怎么整合 MyBatis ,但搜出来的结果往往都是 Play 1 相关的资料,或者使用了已经过时的 API 。

最后还是从 中得到启发,发现 Play 2.5 整合 MyBatis 还是很容易的。

Play 使用 Guice 做依赖注入,只需要添加一个 MyBatisModule 的子类,就能轻松的将 MyBatis 整合到 Play 框架中。

首先在 build.sbt 添加依赖的库:

libraryDependencies ++= Seq(  "org.mybatis" % "mybatis" % "3.4.4",  "org.mybatis" % "mybatis-guice" % "3.9",  "com.google.inject.extensions" % "guice-multibindings" % "4.0")

application.conf 数据源配置:

db.my-db {  driver = org.postgresql.Driver  url = "jdbc:postgresql://localhost:5432/postgres"  username = "postgres"  password = "postgres"}

在 app 目录下创建 module 包 新建 PlayMyBatisModule 类:

package module;import com.google.inject.Key;import com.google.inject.Provider;import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;import org.mybatis.guice.MyBatisModule;import play.db.Database;import play.db.NamedDatabaseImpl;public class PlayMyBatisModule extends MyBatisModule {    @Override    protected void initialize() {        environmentId("default");        // 获取命名为 my-db 的数据源 Provider        Provider
provider = binder().getProvider(Key.get(Database.class, new NamedDatabaseImpl("my-db"))); bindDataSourceProvider(() -> provider.get().getDataSource()); bindTransactionFactoryType(JdbcTransactionFactory.class); // 配置 Dao 类所在的包 addMapperClasses("com.morven.product.mapper"); }}

在 application.conf 中添加模块:

play.modules.enabled+= "module.PlayMyBatisModule"

注意:

  • 如果使用 XML 映射文件,要把 XML 文件放在 conf 目录下与 Dao 类所在包相同结构的路径。XML 放在 app 目录下不会编译到 classes 中,运行时会报找不到 Statement 错误。
  • 如果使用 IDEA 开发,在 conf 新建目录的时候也要注意,不要把包路径建成目录的名字。我和同事都犯过把 com/morven/product/mapper 路径,建成了名字是 "com.morven.product.mapper" 的一个文件夹,在 IDEA 中还看不出问题。

如果要使用多个数据源,可以参考下一篇博文

转载于:https://my.oschina.net/morven/blog/1477319

你可能感兴趣的文章
HoloLens开发手记 - Vuforia开发概述 Vuforia development overview
查看>>
Android支付之支付宝封装类
查看>>
Javascript模板引擎插件收集
查看>>
<亲测>CentOS中yum安装ffmpeg
查看>>
一步一步学Silverlight 2系列(27):使用Brush进行填充
查看>>
[转载]推荐一个被大家忽视的微软的反跨站脚本库Anti-XSS V3.1
查看>>
【分享】马化腾:产品设计与用户体验
查看>>
LINQ学习笔记(8) 标准查询运算符(下)
查看>>
webpack技术讲解及入门
查看>>
基于node实现Markdown文件转换为HTML文件,并支持浏览器端的实时刷新
查看>>
DirectoryIterator遍历目录下的所有文件
查看>>
iOS 微信端背景音乐自动播放和控制
查看>>
如何从浏览器导出HTTPS证书
查看>>
搜索为将 -- Solr 6.6 从入门到进阶(一)
查看>>
CSS 笔记
查看>>
项目实践:从react-router v3迁移到v4
查看>>
[译]HTML&CSS Lesson1: 构建第一张页面
查看>>
常用 shell 查询
查看>>
Spring中的异常处理(兼顾AJAX和FORM)
查看>>
AVG插件泄漏Chrome用户数据
查看>>