Шаги, необходимые для использования базы данных MySQL в Play Framework 2.0

Я новичок в платформе Play. Я пытаюсь настроить базу данных MySQL как источник данных, который будет использоваться с Play Ebeans.

Не могли бы вы объяснить, какие шаги необходимы для настройки MySQL с помощью платформы Play 2.0 (например, загрузка драйверов, добавление зависимостей и т.д.).

Ответ 1

Посмотрите эту страницу из документации по воспроизведению. В нем говорится:

Кроме того, что для базы данных h2 в памяти, полезной в основном в режиме разработки, Play 2.0 не предоставляет никаких драйверов баз данных. Следовательно, для развертывания в производстве вам придется добавить драйвер базы данных в зависимость от приложения.

Например, если вы используете MySQL5, вам нужно добавить зависимость для соединителя:

val appDependencies = Seq(
    // Add your project dependencies here,
    ...
    "mysql" % "mysql-connector-java" % "5.1.18"
    ...
)

SBT загрузит драйвер для вас. Вы также должны проверить раздел об управлении зависимостями.

Чтобы подключиться к MySQL, вам также нужно будет изменить некоторые настройки в application.conf:

db.default.driver=com.mysql.jdbc.Driver
db.default.url="mysql://root:[email protected]/myDatabase"

Ответ 2

Как писал Карстен, его можно извлечь из документации, но вот резюме:

убедитесь, что у вас есть зависимость, настроенная в /project/Build.scala

val appDependencies = Seq(
    // Add your project dependencies here,
    "mysql" % "mysql-connector-java" % "5.1.18"
)

Добавьте правильную конфигурацию БД (замените конфигурацию по умолчанию H2) в /conf/application.conf:

(не удалять кодировку из URL-адреса):

db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/your_db_name?characterEncoding=UTF-8"
db.default.user=your_login
db.default.password=your_pass

в том же файле найдите и убедитесь, что эта строка НЕ ​​прокомментирована:

ebean.default="models.*"

Чтобы перезагрузить приложение (или запустить его в режиме dev), он создаст DDL и попросит вас применить его.

Ответ 3

Я использую play 2.2.0, и мне просто пришлось добавить следующую строку в build.sbt в корневую папку проекта.

  "mysql" % "mysql-connector-java" % "5.1.27"

И воспроизведение автоматически загружает драйвер. Кажется, Build.scala больше не требуется для этого. Изменения в application.conf должны применяться, как упомянуто выше упомянутыми комментаторами.

Ответ 4

Большинство методов доступа к базе данных mysql, с которой я столкнулся, не объясняют, как установить соединение и получить данные из Модели. В моем приложении я использую как mongoDB, так и внешнюю базу данных mysql. Итак, вот как я сделал (часть mysql) вещей:

  • Для Play 2.3.3 в файле build.sbt добавьте определенную строку mysql в libraryDependencies:

    libraryDependencies ++= Seq(
        "mysql" % "mysql-connector-java" % "5.1.27"
    )
    
  • В файле /conf/application.conf добавьте это:

    db.myotherdb.driver = com.mysql.jdbc.Driver
    db.myotherdb.url = "jdbc:mysql://xxx.xxx.xxx.xxx/NameOfOtherDB?characterEncoding=UTF-8"
    db.myotherdb.user = MyOtherDbUSername
    db.myotherdb.password = MyOtherDbPass
    

    Вы можете заменить "myotherdb" на "default", если вы хотите использовать базу данных по умолчанию или любое другое имя, которое вы хотите использовать. Замените "xxx.xxx.xxx.xxx" на IP-адрес сервера, на котором расположена ваша база данных (в случае внешней базы данных) или localhost (или 127.0.0.1) для локальной базы данных. Замените "NameOfOtherDB" на имя базы данных, которую вы хотите использовать, "MyOtherDbUSername" с вашим именем пользователя базы данных и "MyOtherDbPass" с вашим паролем базы данных.

  • Внутри вашей модели (/app/models/MyModel.scala) добавьте это:

    val connection = DB.getConnection("myotherdb")
    
  • Создайте инструкцию, запрос и выполните ее:

    val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
    val query = "SELECT * FROM myTableName"
    val resultset = statement.executeQuery(query)
    
  • Затем вы можете продолжить все, что хотите, с извлеченными данными. Например:

    while (resultset.next()) {
        resultset.getString("columnName")
    }
    

    Где "columnName" - это имя столбца/поля таблицы базы данных, которое вы хотите получить.

И последнее, но не менее важное: я хотел бы отметить, что вы можете закрыть соединение, вызвав close()

Ответ 5

Застрял с моей конфигурацией MySQL, пока не нашел это.

Наиболее важные вещи, взятые из ответа @biesior:

  • Добавить соединитель MySQL/J в зависимости от проекта (который находится внутри /project/Build.scala)
  • После добавления зависимостей запустите play dependencies, чтобы разрешить новую добавленную зависимость MySQL/J
  • Линия конфигурации ebean uncomment по умолчанию ebean.default="models.*"
  • Правильно настройте базу данных MySQL с надлежащим кодированием символов db.default.driver=com.mysql.jdbc.Driver db.default.url="jdbc:mysql://www.sample.com:3306/test?characterEncoding=UTF-8" db.default.user=playuser db.default.pass=playuser

Это спасло мой день.

Ответ 6

Для play 2.3.1 выполните следующие действия.

1) Добавьте соединитель MySQL/J в зависимости от проекта (который находится внутри /project/build.sbt)

libraryDependencies ++= Seq( javaJdbc, javaEbean, "mysql" % "mysql-connector-java" % "5.1.29"

2) Раскомментируйте конфигурационную строку ebean по умолчанию ebean.default = "models. *"

3) Правильно настройте базу данных MySQL с надлежащим кодированием символов

db.default.driver=com.mysql.jdbc.Driver    //this is com. and not org.
db.default.url="jdbc:mysql://127.0.0.1/test?characterEncoding=UTF-8"
db.default.user=playuser
db.default.pass=playuser

4) Большинство Imp. Запустите команду перезагрузить в консоли.

Ответ 7

Воспроизвести 2.4.3 и MYSQL 5.7.9

Мне удалось получить эту работу, собрав бит информации из всех предыдущих ответов. Итак, вот еще один, который, надеюсь, будет более актуальным или полезным для тех, кто имеет аналогичную среду.

Детали среды: (это то, что я использую)

  • Воспроизведение 2.4.3 происходит с активатором-1.3.7-минимальным
  • JDK8, вы уже должны иметь это, так как я не думаю, что эта версия игры работает с JDK7
  • MYSQL 5.7.9

appication.conf

db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost:3306/testSchema?characterEncoding=UTF-8"
db.default.user=yourDBUserName
db.default.password=yourDBUserPass

Примечание:

  • testSchema в URL-адресе - это имя вашей базы данных, если вы используете что-то вроде Workbench MYSQL, вы увидите это в разделе SCHEMAS. Я позвонил в мою тестовую систему. Другие могут называть это чем-то вроде "myDatabase"
  • Порт должен быть портом MYSQL. Не ваш порт приложений. Я положил 3306 в пример, потому что обычно это значение по умолчанию для MYSQL.

build.sbt

Добавьте эту строку ниже в файл build.sbt. Это должно идти после объявления libraryDependencies ++= Seq().

libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36"

Наконец

  • запустите эту команду из корня проекта → activator reload
  • перезапустите приложение

Ответ 8

Для проекта play java Использование SBT

Измените libraryDependency на llok, как это, в "build.sbt"

libraryDependencies ++= Seq(
  javaJdbc,
  javaEbean,
  cache,
  javaWs,
  "mysql" % "mysql-connector-java" % "5.1.27"
)

Запустите проект, используя "запуск активатора"

Воспроизведение приведет к отключению разъема jdbc.

Ответ 9

У меня была одна и та же проблема в последней версии платформы 2.4.x с активатором 1.3.6.

Вот шаги. I Последующие шаги, описанные здесь https://www.playframework.com/documentation/2.4.x/JavaDatabase

Вот мой application.conf

# MySQL DB Configuration
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://{hostname or ipaddres}/{db name}?characterEncoding=UTF-8"
db.default.username=username  // Note that user id deprecated, instead use username. Though that is not a major issue
db.default.password="password"

# JPA Configurations
jpa.default=defaultPersistenceUnit
PlayKeys.externalizeResources = false

# JavaEbean configuration
ebean.default = ["models.*"]

Ответ 10

For me this work ,Add this below line into your Dependencies

**"mysql" % "mysql-connector-java" % "5.1.36"**


So , here is the code

      import java.sql.Connection

      val driver = "com.mysql.jdbc.Driver"
      val url = "jdbc:mysql://localhost/world"
      val username = "root"
      val password = "root"
      var connection: Connection = null

  try {         // make the connection
                Class.forName(driver)
                connection = DriverManager.getConnection(url, username, password)

                // create the statement, and run the select query
                val statement = connection.createStatement()
                val resultSet = statement.executeQuery("SELECT id , name FROM bar")

                val sql: SqlQuery = SQL("select * from products order by name asc")

                while (resultSet.next()) {
                  val id = resultSet.getString("id")
                  val name = resultSet.getString("name")
                  println(id, name)
                }
              } catch {
                case e: Exception => println("exception caught: " + e);
              }
              connection.close()