SpringBoot默认内嵌数据层解决方案

数据层解决方案

常用的数据层解决方案技术选型:数据源+持久化技术+数据库:DruidDataSource+MyBatis-Plus/MyBatis+Mysql;

可以使用Hikari/DruidDataSource+jdbcTemplate/MyBatis-Plus/MyBatis+Mysql/h2搭配使用

内嵌:Embedded

独立的服务器版本:server

内置数据源Hikari

Spring自动配置,durid的依赖在他就会自动配置上

SpringBoot提供了三种内嵌的数据源对象供开发者选择

  1. HikariCP:默认内置数据源对象(轻量级,运行速度快)
  2. Tomcat提供DataSource:HikariCP不可用的情况下,且在web环境中,将使用tomcat服务器配置的数据源对象
  3. Commons DBCP:Hikari不可用,tomcat数据源也不可用,将使用dbcp数据源

默认启动就是Hikari

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
    username: root
    password: root
  1. 通用配置无法设置具体的数据源配置信息,仅提供基本的连接相关配置,如需配置,在下一级配置中设置具体设定
  2. 每种的配置方法不一样
spring:
    datasource:
    url: jdbc:mysql://ocalhost:3306/ssm_db?serverTimezone=UTC
    hikari:
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: root
        password: root
        maximum-pool-size: 50
    dbcp2:
    tomcat: 
内置持久化解决方案jdbcTemplate
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
spring:
  jdbc:
   template:
     query-timeout: -1  # 查询超时时间
     max-rows: 500      # 最大行数
     fetch-size: -1     # 批处理数量
@springBootTest
class springbootSqlApplicationTests{
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Test
    void testJdbc(){
        String sql="select*from tbl book where id = 1";
        List<Book>query = jdbcTemplate.query(sql, new RowMapper<Book>(){
            @Override
            public Book mapRow(ResultSet rs, int rowNum)throws SQLException{
                Book temp = new Book();
                temp.setId(rs.getInt("id"));
                temp.setName(rs.getString("name"));
                temp.setType(rs.getString("type"));
                temp.setDescription(rs.getString("description"));
                return temp;
            }
        });
        System.out.println(query);
    } 
}

update、query

@Test
void testjdbcTemplata(@Autowired JdbcTemplate jdbcTemplate){
    String sql = "select * from tb_book where id = 1";
    List<Map<String,Object>> maps = jdbcTemplate.queryForList(sql);
}
@Test
void testjdbcTemplata(@Autowired JdbcTemplate jdbcTemplate){
    String sql = "select * from tb_book where id = 1";
    RowMapper<Book> rm = new RowMapper<Book>(){
        @Override
        public Book mapRow(ResultSet rs,int rowNum) throws SQLException {
            Book temp = new Book();
            temp.setId(rs.getInt("id"));
            temp.setName(rs.getString("name"));
            temp.setType(rs.getString("type"));
            temp.setDesc(rs.getString("desc"));
            return temp;
        }
    };
    List<Book> list = jdbcTemplate.query(sql,rm);
}
@Test
void testjdbcTemplataSave(@Autowired JdbcTemplate jdbcTemplate){
    String sql = "insert into tb_book values (1,'spb1','spb1','spb1')";
    jdbcTemplate.update(sql);
}
内嵌数据库H2

SpringBoot提供了3种内嵌数据库供开发者选择:H2、HSQL、Derby

  1. 都是java语言写的(放在SpringBoot容器里跟这样一起启动)
  2. 都可以在内存中启动
  3. 都足够小
  4. 都可以脱离文件系统那种数据库运行,测试方便,真正上线还是用MySQL

h2数据库控制台仅用于开发阶段

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jpa</artifactId>
</dependency>

启动管理界面

用户名/密码:sa/123456

spring:
  h2:
    console:
      path: /h2
      enabled: true
  datasource: jdbc:h2:~test
  hikari: 
    driver-class-name: org.h2.Driver
    username: sa
    password: 123456
posted @ 2024-04-01 15:08  燕子去了  阅读(22)  评论(0编辑  收藏  举报

Powered by .NET 8.0 on Kubernetes

我会翻山越岭,到每一个我想去的地方

...