首页 > 数据库 >Springboot 内嵌 Sqlite 配置使用

Springboot 内嵌 Sqlite 配置使用

时间:2023-08-20 16:12:48浏览次数:40  
标签:内嵌 Sqlite hibernate Springboot jpa spring environment org import

版本号

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);
    }
}

标签:内嵌,Sqlite,hibernate,Springboot,jpa,spring,environment,org,import
From: https://www.cnblogs.com/pandacode/p/17644123.html

相关文章

  • JAVAEE就业免费视频教程springboot综合案例
    day06_springboot综合案例资源权限管理查询资源权限查询资源权限执行流程编写PermissionMapper接口publicinterfacePermissionMapper{/***查询资源权限*/List<Permission>findAll();}编写PermissionServicepublicinterfacePermissionServi......
  • java语言B/S医院HIS系统源码【springboot】
     医院云HIS全称为基于云计算的医疗卫生信息系统(Cloud-BasedHealthcareInformationSystem),是运用云计算、大数据、物联网等新兴信息技术,按照现代医疗卫生管理要求,在一定区域范围内以数字化形式提供医疗卫生行业数据收集、存储、传递、处理的业务和技术平台,实现区域内医疗卫......
  • SpringBoot使用jasypt实现数据库配置加密
    我们在日常使用中有需要加密设置数据库连接配置的情况,我们可以使用第三方的依赖jasypt来实现我们的数据库配置加密,从而提高系统的安全性。一、引入jasypt依赖<!--jasypt--><dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</......
  • 基于springboot校园管理系统的设计与实现
    研究的内容目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的校园管理系统的信息管理软件仍没有得到大多数人的了解或认可。本选题宗旨在通过标签分......
  • 基于SpringBoot的在线视频教育平台的设计与实现
    拟解决的问题:(1)根据指导老师提供的原始材料和课题要求按照管理信息系统的生命周期开发方法和步骤,经过细致的系统分析、合理的系统设计,高效率的系统试试,引发web开发的思想,选择可行的开发工具,实现在线教育平台。本课题充分利用面向对象开发环境的可视化特点,合理的设计用户界面,按照数......
  • 基于springboot房产销售系统
    房产销售也都将通过计算机进行整体智能化操作,对于房产销售系统所牵扯的管理及数据保存都是非常多的,例如管理员;首页、个人中心、用户管理、销售经理管理、房源信息管理、房源类型管理、房子户型管理、交易订单管理、预约看房管理、评价管理、我的收藏管理、系统管理,用户;首页、个人中......
  • 基于Springboot学生读书笔记共享
    本文主要论述了如何使用JAVA语言开发一个读书笔记共享平台,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述读书笔记共享平台的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计......
  • 基于springboot母婴商城
    课题简介本课题后端使用SpringBoot+SpringCloud框架,前端采用html,JQuery,JS,DIV+CSS技术进行编程,设计在线商城。系统具有前台和后台两大服务。前台主要有用户登录注册、浏览商品、加入购物车、提交订单、支付等模块;后台主要有商品管理、用户管理、订单管理、分类管理等模块。课题内容......
  • 基于springboot高校心理教育辅导设计与实现
    研究思路 本论文研究的高校心理教育辅导系统是一个采用B/S结构的Web应用程序,系统的开发主要使用面向对象语言Java、SpringBoot框架、Thymeleaf模板引擎(主要用来编写动态页面)、MySQL数据库。通过Thymeleaf模板引擎实现Java代码和前端代码分离,前端服务器访问后端服务器提供的接......
  • 基于springboot的课程作业管理系统
    当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性......