Springboot内嵌SQLite配置使用详解

 更新时间:2023年08月24日 10:31:49   作者:”PANDA  
这篇文章主要介绍了Springboot内嵌SQLite配置使用详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

版本号

MacOS Apple M1 | Jdk17 | Maven 3.8.5 | SpringBoot 2.6.9 | SQLite 3.42.0.0

pom.xml

<dependencies>
    <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.42.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.github.gwenn</groupId>
            <artifactId>sqlite-dialect</artifactId>
            <version>0.1.4</version>
        </dependency>
</dependencies>

基础配置

application.properties

# data source
spring.datasource.url=jdbc:sqlite:tutorial.db
spring.datasource.driver-class-name=org.sqlite.JDBC
# spring.datasource.journal_mode=WAL
spring.datasource.hikari.maximum-pool-size=1
spring.jpa.properties.hibernate.dialect=org.sqlite.hibernate.dialect.SQLiteDialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

Configuration

import java.util.Properties;
import javax.annotation.Resource;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
@Configuration
@EnableJpaRepositories(basePackages = "com.dipeak.diengine.backend.dao")
public class DataSourceConfig {
  @Resource private Environment environment;
  @Bean
  public DataSource dataSource() {
    final DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(environment.getProperty("spring.datasource.driver-class-name"));
    dataSource.setUrl(environment.getProperty("spring.datasource.url"));
    return dataSource;
  }
  @Bean
  public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
    em.setDataSource(dataSource());
    em.setPackagesToScan(new String[] {"com.dipeak.diengine.backend.model.entity"});
    em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
    em.setJpaProperties(additionalProperties());
    return em;
  }
  final Properties additionalProperties() {
    final Properties hibernateProperties = new Properties();
    if (environment.getProperty("spring.jpa.hibernate.ddl-auto") != null) {
      hibernateProperties.setProperty(
          "hibernate.hbm2ddl.auto", environment.getProperty("spring.jpa.hibernate.ddl-auto"));
    }
    if (environment.getProperty("spring.jpa.properties.hibernate.dialect") != null) {
      hibernateProperties.setProperty(
          "hibernate.dialect", environment.getProperty("spring.jpa.properties.hibernate.dialect"));
    }
    if (environment.getProperty("hibernate.show_sql") != null) {
      hibernateProperties.setProperty(
          "hibernate.show_sql", environment.getProperty("hibernate.show_sql"));
    }
    return hibernateProperties;
  }
}

Entity 定义

@Entity
@Table(name = "users")
public class User {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  private String name;
}

Repository 定义

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
  @Query("select u from User u where u.id <= ?1")
  Page<User> findMore(Long maxId, Pageable pageable);
  @Modifying
  @Transactional
  @Query("update User u set u.name = ?1 where u.id = ?2")
  int updateById(String name, Long id);
}

Unit Test

public class SqliteTest {
    @Resource private UserRepository userRepository;
    @Test
    public void insert() {
        User user = new User();
        user.setId(3l);
        user.setName("wang da fang");
        userRepository.save(user);
    }
}

到此这篇关于Springboot内嵌SQLite配置使用的文章就介绍到这了,更多相关Springboot内嵌SQLite内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring session redis 修改默认的序列化方法(案例)

    Spring session redis 修改默认的序列化方法(案例)

    这篇文章主要介绍了Spring session redis 修改默认的序列化方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 关于分布式锁(Redisson)的原理分析

    关于分布式锁(Redisson)的原理分析

    这篇文章主要介绍了关于分布式锁(Redisson)的原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Java、C++中子类对父类函数覆盖的可访问性缩小的区别介绍

    Java、C++中子类对父类函数覆盖的可访问性缩小的区别介绍

    这篇文章主要给大家介绍了关于Java、C++中子类对父类函数覆盖的可访问性缩小的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • 完美解决idea创建文件时,文件不分级展示的情况

    完美解决idea创建文件时,文件不分级展示的情况

    这篇文章主要介绍了完美解决idea创建文件时,文件不分级展示的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • java集合PriorityQueue优先级队列方法实例

    java集合PriorityQueue优先级队列方法实例

    这篇文章主要为大家介绍了java集合PriorityQueue优先级队列方法实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • SpringBoot定时任务多线程实现示例

    SpringBoot定时任务多线程实现示例

    在真实的Java开发环境中,我们经常会需要用到定时任务来帮助我们完成一些特殊的任务,本文主要介绍了SpringBoot定时任务多线程实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • SpringBoot使用邮箱发送验证码实现注册功能

    SpringBoot使用邮箱发送验证码实现注册功能

    这篇文章主要为大家详细介绍了SpringBoot使用邮箱发送验证码实现注册功能实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 解决Maven项目加载spring bean的配置xml文件会提示找不到问题

    解决Maven项目加载spring bean的配置xml文件会提示找不到问题

    这篇文章主要介绍了解决Maven项目加载spring bean的配置xml文件会提示找不到问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java实现大文本文件拆分

    java实现大文本文件拆分

    这篇文章主要为大家详细介绍了java实现大文本文件拆分,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Java多线程中常见的锁策略详解

    Java多线程中常见的锁策略详解

    这篇文章主要介绍了Java多线程中常见的锁策略详解,在Java多线程中锁(synchronized)也会根据锁的竞争程度来升级为相关“高等级”锁,本文为了更好的理解 synchronized 加锁机制,对其做出了详细解释,需要的朋友可以参考下
    2023-07-07

最新评论