文档章节

Play Framework 2.5 整合 MyBatis

芝麻糖葫芦
 芝麻糖葫芦
发布于 2017/07/21 17:52
字数 411
阅读 189
收藏 0

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

最后还是从 MyBatis 整合 Guice 的教程中得到启发,发现 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<Database> 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 中还看不出问题。

如果要使用多个数据源,可以参考下一篇博文 Play Framework 2.5 整合 MyBatis —— 多数据源

© 著作权归作者所有

共有 人打赏支持
芝麻糖葫芦
粉丝 3
博文 19
码字总数 4908
作品 0
济南
高级程序员
Play 1.x 学习资料汇总

1.Play!Framework学习笔记:初识Play(http://blog.csdn.net/w302974215/article/details/46926007) 2.Play Framework入门引导(http://somefuture.iteye.com/blog/1985667) 3.Play框架1.2.7版......

IT追寻者
2016/07/22
43
0
整合Spring SpringMVC MyBatis

1.介绍 Spring就没什么好介绍的了。 SpringMVC:http://my.oschina.net/ChiLin/blog/693486 MyBatis: MyBatis is a first class persistence framework with support for custom SQL, stor......

蜡笔小小小新
2016/06/08
706
3
spring boot入门-2

时光荏苒,岁月如梭,距离我上次写的spring-boot入门1已经过去了好长的时间了,就这么一段时间里面,spring boot有发生了很多的新的变化.在配置方面更加的简化. 使用spring boot能更加简单的进行...

u010398771
2017/12/24
0
0
SSM整合,个人总结和step

我最近才整合完SSM。 前段时间,分开学习了这三个框架,都是看某黄埔军校的视频,整合的部分没看视频,想自己做。 但是有一些部分自己没有能完成,主要是如何从spring容器里取出Application...

wzlhlhhh
05/11
0
0
整合Spring+Mybatis框架出现问题

1、项目是使用maven构建,搭建了两个maven modules(web和framework) 在framework里面整合了mybatis,dao和service放在这个模块里面,添加了对应的配置文件spring-db.xml和db.properties 在...

流风回雪pj
2017/06/02
123
3

没有更多内容

加载失败,请刷新页面

加载更多

Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
4
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部