文档章节

Play Framework 2.5 整合 MyBatis

芝麻糖葫芦
 芝麻糖葫芦
发布于 2017/07/21 17:52
字数 411
阅读 164
收藏 0
点赞 0
评论 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
博文 15
码字总数 3383
作品 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 ⋅ 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 ⋅ 3

spring boot入门-2

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

u010398771 ⋅ 2017/12/24 ⋅ 0

SSM整合,个人总结和step

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

wzlhlhhh ⋅ 05/11 ⋅ 0

整合Spring+Mybatis框架出现问题

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

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

Play Framework 2.5 发布,要求 Java 8 支持

Play Framework 2.5 发布了,该版本最大的变化是使用 Akka Streams 替代原有基于迭代的异步 IO API。此次是改进对 WebSocket 帧的控制;使用 Java 8 平台;支持其他日志框架;可记录执行的 ...

oschina ⋅ 2016/03/05 ⋅ 59

ZHENFENGSHISAN/perfect-ssm

Quick Start 项目简介 ssm系列 ssm-demo:Spring+SpringMVC+Mybatis+easyUI整合 perfect-ssm:RESTful API+redis缓存 ssm-cluster:前后端分离+集群部署 ssm-dubbo:dubbo服务化 ssm-micro-se......

ZHENFENGSHISAN ⋅ 2017/09/18 ⋅ 0

中英文对照 介绍Play Framework 框架 安装向导(Installation guide)

安装向导 h1. Installation guide 先决条件 h2. Prerequisites 想要运行Play框架,你需要Java 5或更高,如果你想从源码编译Play,你需要"Bazaar source control client":http://bazaar-vcs....

lyuehh ⋅ 2010/07/13 ⋅ 2

【转】Play, Rails, Wicket, Grails, Tapestry, Lift, JSP, Context 性能比较

This post shows how to render a list of product objects with associated category object using the webframeworks Rails, Wicket, Grails, Play, Tapestry, Lift, Context and JSP/Serv......

老盖 ⋅ 2011/09/01 ⋅ 7

如何解决playframework报OutOfMemoryError: PermGen space的问题?

使用play 1.2.4创建的项目,之前部署在腾讯云上,运行很正常,最近却访问不了,检查日志,会有如下错误: Oops: OutOfMemoryError An unexpected error occured caused by exception OutOfMe...

_Iwill ⋅ 2015/03/23 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NFS介绍 NFS服务端安装配置 NFS配置选项

NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导...

lyy549745 ⋅ 27分钟前 ⋅ 0

Spring AOP 源码分析 - 筛选合适的通知器

1.简介 从本篇文章开始,我将会对 Spring AOP 部分的源码进行分析。本文是 Spring AOP 源码分析系列文章的第二篇,本文主要分析 Spring AOP 是如何为目标 bean 筛选出合适的通知器(Advisor...

java高级架构牛人 ⋅ 50分钟前 ⋅ 0

HTML-标签手册

标签 描述 <!--...--> 定义注释。 <!DOCTYPE> 定义文档类型。 <a> 定义锚。超链接 <abbr> 定义缩写。 <acronym> 定义只取首字母的缩写。 <address> 定义文档作者或拥有者的联系信息。 <apple......

ZHAO_JH ⋅ 51分钟前 ⋅ 0

SylixOS在t_main中使用硬浮点方法

问题描述 在某些使用场景中,应用程序不使用动态加载的方式执行,而是跟随BSP在 t_main 线程中启动,此时应用代码是跟随 BSP 进行编译的。由于 BSP 默认使用软浮点,所以会导致应用代码中的浮...

zhywxyy ⋅ 59分钟前 ⋅ 0

JsBridge原理分析

看了这个Github代码 https://github.com/lzyzsd/JsBridge,想起N年前比较火的Hybrid方案,想看看现在跨平台调用实现有什么新的实现方式。代码看下来之后发现确实有点独特之处,这里先把核心的...

Kingguary ⋅ 今天 ⋅ 0

Intellij IDEA神器常用技巧五-真正常用快捷键(收藏级)

如果你觉得前面几篇博文太啰嗦,下面是博主多年使用Intellij IDEA真正常用快捷键,建议收藏!!! sout,System.out.println()快捷键 fori,for循环快捷键 psvm,main方法快捷键 Alt+Home,导...

Mkeeper ⋅ 今天 ⋅ 0

Java 静态代码分析工具简要分析与使用

本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,...

Oo若离oO ⋅ 今天 ⋅ 0

SpringBoot自动配置小记

spring-boot项目的特色就在于它的自动配置,自动配置就是开箱即用的本源。 不过支持一个子项目的自动配置,往往比较复杂,无论是sping自己的项目,还是第三方的,都是如此。刚接触会有点乱乱...

大_于 ⋅ 今天 ⋅ 0

React jsx 中写更优雅、直观的条件运算符

在这篇文字中我学到了很多知识,同时结合工作中的一些经验也在思考一些东西。比如条件运算符 Conditional Operator condition ? expr_if_true : expr_if_false 在jsx中书写条件语句我们经常都...

开源中国最帅没有之一 ⋅ 今天 ⋅ 0

vim编辑模式与命令模式

5.5 进入编辑模式 从编辑模式返回一般模式“Esc” 5.6 vim命令模式 命令 :“nohl”=no high light 无高亮,取消内容中高亮标记 "x":保存退出,和wq的区别是,当进入一个文件未进行编辑时,使...

弓正 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部