<legend id='Zmb88'><style id='Zmb88'><dir id='Zmb88'><q id='Zmb88'></q></dir></style></legend>

      <small id='Zmb88'></small><noframes id='Zmb88'>

      <tfoot id='Zmb88'></tfoot>
    1. <i id='Zmb88'><tr id='Zmb88'><dt id='Zmb88'><q id='Zmb88'><span id='Zmb88'><b id='Zmb88'><form id='Zmb88'><ins id='Zmb88'></ins><ul id='Zmb88'></ul><sub id='Zmb88'></sub></form><legend id='Zmb88'></legend><bdo id='Zmb88'><pre id='Zmb88'><center id='Zmb88'></center></pre></bdo></b><th id='Zmb88'></th></span></q></dt></tr></i><div id='Zmb88'><tfoot id='Zmb88'></tfoot><dl id='Zmb88'><fieldset id='Zmb88'></fieldset></dl></div>
      • <bdo id='Zmb88'></bdo><ul id='Zmb88'></ul>

        Spring Boot 和 SQLite

        时间:2023-09-17
        <tfoot id='GVjgT'></tfoot>
      1. <legend id='GVjgT'><style id='GVjgT'><dir id='GVjgT'><q id='GVjgT'></q></dir></style></legend>
      2. <small id='GVjgT'></small><noframes id='GVjgT'>

                  <bdo id='GVjgT'></bdo><ul id='GVjgT'></ul>
                  <i id='GVjgT'><tr id='GVjgT'><dt id='GVjgT'><q id='GVjgT'><span id='GVjgT'><b id='GVjgT'><form id='GVjgT'><ins id='GVjgT'></ins><ul id='GVjgT'></ul><sub id='GVjgT'></sub></form><legend id='GVjgT'></legend><bdo id='GVjgT'><pre id='GVjgT'><center id='GVjgT'></center></pre></bdo></b><th id='GVjgT'></th></span></q></dt></tr></i><div id='GVjgT'><tfoot id='GVjgT'></tfoot><dl id='GVjgT'><fieldset id='GVjgT'></fieldset></dl></div>

                    <tbody id='GVjgT'></tbody>

                  本文介绍了Spring Boot 和 SQLite的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试将 SQLite 与 Spring Boot 应用程序一起使用.我知道 Spring Boot 中的强大支持,例如 MongoDB.但是我找不到在 SQLite 中使用 Spring Boot 的方法?任何建议从何处或如何开始使用 Spring Boot 和 SQLite??

                  I am trying to use SQLite with a Spring Boot app. I am aware of the awesome support in Spring Boot with for example MongoDB. But i cannot find a way to use Spring Boot with SQLite? Any suggestion where or how to start with using Spring Boot and SQLite??

                  推荐答案

                  Spring Boot 不适用于 SQLite(例如 H2、HSQL 或 Apache Derby - 我建议使用其中任何一种)您使用而不是 SQLite).

                  Spring Boot doesn't work out of the box with SQLite (as it does for example with H2, HSQL or Apache Derby - any of which which I would suggest you use instead of SQLite).

                  首先,您需要覆盖数据源以指定您的 SQLite 数据源.在您的配置中使用以下代码(使用在 Spring Boot 1.1.0.M2 中引入的 DataSourceBuilder)

                  First of all you need to override the data source to specify you SQLite data souce. Use the following code in your configuration (uses DataSourceBuilder which was introduced in Spring Boot 1.1.0.M2)

                  @Bean
                  public DataSource dataSource() {
                          DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
                          dataSourceBuilder.driverClassName("org.sqlite.JDBC");
                          dataSourceBuilder.url("jdbc:sqlite:your.db");
                          return dataSourceBuilder.build();   
                  }
                  

                  然后你需要创建一个 SQLiteDialect 因为 Hibernate 还没有一个(基于 here 但适用于 Hibernate 4)

                  Then you need to create an SQLiteDialect because Hibernate does not already have one (based on the code from here but adapted for Hibernate 4)

                  package your.package
                  
                  import java.sql.Types;
                  
                  import org.hibernate.dialect.Dialect;
                  import org.hibernate.dialect.function.StandardSQLFunction;
                  import org.hibernate.dialect.function.SQLFunctionTemplate;
                  import org.hibernate.dialect.function.VarArgsSQLFunction;
                  import org.hibernate.Hibernate;
                  import org.hibernate.type.StringType;
                  
                  public class SQLiteDialect extends Dialect {
                      public SQLiteDialect() {
                          registerColumnType(Types.BIT, "integer");
                          registerColumnType(Types.TINYINT, "tinyint");
                          registerColumnType(Types.SMALLINT, "smallint");
                          registerColumnType(Types.INTEGER, "integer");
                          registerColumnType(Types.BIGINT, "bigint");
                          registerColumnType(Types.FLOAT, "float");
                          registerColumnType(Types.REAL, "real");
                          registerColumnType(Types.DOUBLE, "double");
                          registerColumnType(Types.NUMERIC, "numeric");
                          registerColumnType(Types.DECIMAL, "decimal");
                          registerColumnType(Types.CHAR, "char");
                          registerColumnType(Types.VARCHAR, "varchar");
                          registerColumnType(Types.LONGVARCHAR, "longvarchar");
                          registerColumnType(Types.DATE, "date");
                          registerColumnType(Types.TIME, "time");
                          registerColumnType(Types.TIMESTAMP, "timestamp");
                          registerColumnType(Types.BINARY, "blob");
                          registerColumnType(Types.VARBINARY, "blob");
                          registerColumnType(Types.LONGVARBINARY, "blob");
                          // registerColumnType(Types.NULL, "null");
                          registerColumnType(Types.BLOB, "blob");
                          registerColumnType(Types.CLOB, "clob");
                          registerColumnType(Types.BOOLEAN, "integer");
                  
                          registerFunction( "concat", new VarArgsSQLFunction(StringType.INSTANCE, "", "||", "") );
                          registerFunction( "mod", new SQLFunctionTemplate( StringType.INSTANCE, "?1 % ?2" ) );
                          registerFunction( "substr", new StandardSQLFunction("substr", StringType.INSTANCE) );
                          registerFunction( "substring", new StandardSQLFunction( "substr", StringType.INSTANCE) );
                      }
                  
                      public boolean supportsIdentityColumns() {
                          return true;
                      }
                  
                    /*
                    public boolean supportsInsertSelectIdentity() {
                      return true; // As specify in NHibernate dialect
                    }
                    */
                  
                      public boolean hasDataTypeInIdentityColumn() {
                          return false; // As specify in NHibernate dialect
                      }
                  
                    /*
                    public String appendIdentitySelectToInsert(String insertString) {
                      return new StringBuffer(insertString.length()+30). // As specify in NHibernate dialect
                        append(insertString).
                        append("; ").append(getIdentitySelectString()).
                        toString();
                    }
                    */
                  
                      public String getIdentityColumnString() {
                          // return "integer primary key autoincrement";
                          return "integer";
                      }
                  
                      public String getIdentitySelectString() {
                          return "select last_insert_rowid()";
                      }
                  
                      public boolean supportsLimit() {
                          return true;
                      }
                  
                      protected String getLimitString(String query, boolean hasOffset) {
                          return new StringBuffer(query.length()+20).
                                  append(query).
                                  append(hasOffset ? " limit ? offset ?" : " limit ?").
                                  toString();
                      }
                  
                      public boolean supportsTemporaryTables() {
                          return true;
                      }
                  
                      public String getCreateTemporaryTableString() {
                          return "create temporary table if not exists";
                      }
                  
                      public boolean dropTemporaryTableAfterUse() {
                          return false;
                      }
                  
                      public boolean supportsCurrentTimestampSelection() {
                          return true;
                      }
                  
                      public boolean isCurrentTimestampSelectStringCallable() {
                          return false;
                      }
                  
                      public String getCurrentTimestampSelectString() {
                          return "select current_timestamp";
                      }
                  
                      public boolean supportsUnionAll() {
                          return true;
                      }
                  
                      public boolean hasAlterTable() {
                          return false; // As specify in NHibernate dialect
                      }
                  
                      public boolean dropConstraints() {
                          return false;
                      }
                  
                      public String getAddColumnString() {
                          return "add column";
                      }
                  
                      public String getForUpdateString() {
                          return "";
                      }
                  
                      public boolean supportsOuterJoinForUpdate() {
                          return false;
                      }
                  
                      public String getDropForeignKeyString() {
                          throw new UnsupportedOperationException("No drop foreign key syntax supported by SQLiteDialect");
                      }
                  
                      public String getAddForeignKeyConstraintString(String constraintName,
                                                                     String[] foreignKey, String referencedTable, String[] primaryKey,
                                                                     boolean referencesPrimaryKey) {
                          throw new UnsupportedOperationException("No add foreign key syntax supported by SQLiteDialect");
                      }
                  
                      public String getAddPrimaryKeyConstraintString(String constraintName) {
                          throw new UnsupportedOperationException("No add primary key syntax supported by SQLiteDialect");
                      }
                  
                      public boolean supportsIfExistsBeforeTableName() {
                          return true;
                      }
                  
                      public boolean supportsCascadeDelete() {
                          return false;
                      }
                  }
                  

                  最后在 application.properties 覆盖以下设置

                  Finally in application.properties override the following settings

                  spring.jpa.database-platform=your.package.SQLiteDialect
                  spring.jpa.hibernate.ddl-auto=create-drop
                  

                  需要第一个设置,以便 Spring Boot 通知 Hibernate 它应该使用上面创建的 SQLiteDialect.

                  The first setting is needed in order for Spring Boot to inform Hibernate that it should use the SQLiteDialect that was created above.

                  这篇关于Spring Boot 和 SQLite的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:在 Python 中将 MySQL 与 AWS Lambda 结合使用的问题 下一篇:pyodbc:如何重试从瞬态错误中恢复?

                  相关文章

                  <small id='iTmiz'></small><noframes id='iTmiz'>

                  1. <legend id='iTmiz'><style id='iTmiz'><dir id='iTmiz'><q id='iTmiz'></q></dir></style></legend>
                  2. <tfoot id='iTmiz'></tfoot>

                    1. <i id='iTmiz'><tr id='iTmiz'><dt id='iTmiz'><q id='iTmiz'><span id='iTmiz'><b id='iTmiz'><form id='iTmiz'><ins id='iTmiz'></ins><ul id='iTmiz'></ul><sub id='iTmiz'></sub></form><legend id='iTmiz'></legend><bdo id='iTmiz'><pre id='iTmiz'><center id='iTmiz'></center></pre></bdo></b><th id='iTmiz'></th></span></q></dt></tr></i><div id='iTmiz'><tfoot id='iTmiz'></tfoot><dl id='iTmiz'><fieldset id='iTmiz'></fieldset></dl></div>
                        <bdo id='iTmiz'></bdo><ul id='iTmiz'></ul>