SpringBoot入门(十三)

简介: SpringBoot入门(十三)

SpringBoot-jdbc

SpringBoot中的jdbcTemplate和Spring中的jdbc基本上是一样的,没什么变化的。但是也有不同的,在spring中使用jdbc的话使用的是配置的数据源,但是在boot中如果使用数据源的话会默认会自动使用数据库连接池的,如果不配置自己的数据库连接池都会触发这个默认的数据源的操作的。在自动装配的过程中,jdbc是自动装配的。支持的数据源有:

1、tomcat的数据库连接池 2、HikariDataSource的数据库连接池 3、dbcp2数据库连接池

springBoot默认支持的数据库连接池是上面的三种。我们要想使用jdbc的话需要引入一个依赖:jdbc 加上这个依赖的话,会默认的将HikariDataSource这个数据源给装配到了spring容器中去。

  1.       <dependency>
  2.            <groupId>org.springframework.boot</groupId>
  3.            <artifactId>spring-boot-starter-jdbc</artifactId>
  4.        </dependency>

如果不指定下面的type的话,默认的是使用HikariDataSource的数据库连接池,如果指定type的话就使用指定的数据库连接池。

在装配Hikari,会默认的装配DataSource对象到spring容器中去。报错的原因是内置的数据源的url等等一些列的信息没有配置。

配置下数据源:然后这些的配置会被加载到源代码的DataSourceProperties文件里面去。


然后再次启动项目运行下:我们可以通过DataSource得到数据源

然后通过数据源就可以把连接给拿出来:

  1.      bean.getConnection().getCatalog()

如果想用druid的数据库连接池的话:

1、加上相关的依赖:

  1.     <dependency>
  2.            <groupId>com.alibaba</groupId>
  3.            <artifactId>druid</artifactId>
  4.            <version>1.1.10</version>
  5.        </dependency>

2、在属性的配置文件中加上type的属性,然后就会把默认的数据库连接池给覆盖掉,从而用新的数据库连接池。

启动下项目运行下:

在SpringBoot中装配DataSource对象的同时会把jdbcTemplate对象装配进去。我们可以获取下:

1、新建个UserDaoImpl的类,代码如下:

  1. package com.example.bootjdbc2;
  2. import com.example.bootjdbc2.domain.Book;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.jdbc.core.JdbcTemplate;
  5. import org.springframework.jdbc.core.RowMapper;
  6. import org.springframework.stereotype.Repository;
  7. import java.sql.ResultSet;
  8. import java.sql.SQLException;
  9. import java.util.Date;
  10. import java.util.List;
  11. @Repository
  12. public class UserDaoImpl {
  13.    @Autowired
  14.    private JdbcTemplate  jdbcTemplate;
  15.    class BookRowMapper implements RowMapper<Book> {
  16.        @Override
  17.        //ResultSet结果集映射一个对象Book
  18.        public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
  19.            Book book = new Book();
  20.            book.setBookAuthor(rs.getString("book_author"));
  21.            book.setBookDate(new Date(rs.getDate("book_date").getTime()));
  22.            book.setBookId(rs.getInt("book_id"));
  23.            book.setBookName(rs.getString("book_name"));
  24.            book.setBookPrice(rs.getBigDecimal("book_price"));
  25.            return book;
  26.        }
  27.    }
  28.    public void add() {
  29.        String sql = "INSERT INTO `testdb`.`t_book`(`book_name`, `book_author`, `book_price`, `book_date`) VALUES ('222', '333', 444, '2018-07-11');\n";
  30.        jdbcTemplate.execute(sql);
  31.    }
  32.    public Book selectOne() {
  33.        String sql = "select * from t_book where book_id=?";
  34.        Book book = jdbcTemplate.queryForObject(sql, new BookRowMapper(), 2);

  35.        return book;
  36.    }
  37.    public List<Book> selectList() {
  38.        String sql = "select * from t_book";
  39.        return jdbcTemplate.query(sql,new BookRowMapper());
  40.    }
  41.    public void update() {
  42.        String sql = "UPDATE `testdb`.`t_book` SET `book_name` = '333', `book_author` = '555', `book_price` = 444, `book_date` = '2018-07-11' WHERE `book_id` = 2;\n";
  43.        jdbcTemplate.update(sql);
  44.    }
  45.    public void delete() {
  46.        String sql = "delete from t_book where book_id=?";
  47.        jdbcTemplate.update(sql,3);
  48.    }
  49. }

Book类的代码如下:

  1. package com.example.bootjdbc2.domain;
  2. import java.math.BigDecimal;
  3. import java.util.Date;
  4. public class Book {
  5.    private Integer bookId;
  6.    private String bookName;
  7.    private String bookAuthor;
  8.    private BigDecimal bookPrice;
  9.    private Date bookDate;
  10.    public Integer getBookId() {
  11.        return bookId;
  12.    }
  13.    public void setBookId(Integer bookId) {
  14.        this.bookId = bookId;
  15.    }
  16.    public String getBookName() {
  17.        return bookName;
  18.    }
  19.    public void setBookName(String bookName) {
  20.        this.bookName = bookName;
  21.    }
  22.    public String getBookAuthor() {
  23.        return bookAuthor;
  24.    }
  25.    public void setBookAuthor(String bookAuthor) {
  26.        this.bookAuthor = bookAuthor;
  27.    }
  28.    public BigDecimal getBookPrice() {
  29.        return bookPrice;
  30.    }
  31.    public void setBookPrice(BigDecimal bookPrice) {
  32.        this.bookPrice = bookPrice;
  33.    }
  34.    public Date getBookDate() {
  35.        return bookDate;
  36.    }
  37.    public void setBookDate(Date bookDate) {
  38.        this.bookDate = bookDate;
  39.    }
  40.    @Override
  41.    public String toString() {
  42.        return "Book{" +
  43.                "bookId=" + bookId +
  44.                ", bookName='" + bookName + '\'' +
  45.                ", bookAuthor='" + bookAuthor + '\'' +
  46.                ", bookPrice=" + bookPrice +
  47.                ", bookDate=" + bookDate +
  48.                '}';
  49.    }
  50. }

主类的代码如下:

  1. package com.example.bootjdbc2;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.ConfigurableApplicationContext;
  5. import org.springframework.jdbc.core.JdbcTemplate;

  6. import javax.sql.DataSource;
  7. import java.sql.SQLException;
  8. @SpringBootApplication
  9. public class BootJdbc2Application {
  10.    public static void main(String[] args) throws SQLException {
  11.        ConfigurableApplicationContext context = SpringApplication.run(BootJdbc2Application.class, args);
  12.        DataSource bean = context.getBean(DataSource.class);
  13.        //获取数据源的
  14.        System.out.println(bean.getClass());
  15.        System.out.println(context.getBean(JdbcTemplate.class));
  16.        UserDaoImpl bean1 = context.getBean(UserDaoImpl.class);
  17.        System.out.println(bean1.selectOne());
  18.    }
  19. }


输出的结果如下:

总结:上面的就是SpringBoot中的jdbcTemplate的用法。

相关文章
|
13小时前
|
Java 应用服务中间件 Spring
SpringBoot入门(十一)
SpringBoot入门(十一)
SpringBoot入门(十一)
|
13小时前
|
Java Spring 容器
SpringBoot入门(十三)
SpringBoot入门(十三)
|
13小时前
|
Java 应用服务中间件 网络安全
SpringBoot入门(十二)
SpringBoot入门(十二)
|
存储 NoSQL Oracle
SpringBoot资源整合——SpringData(课时十八)
SpringBoot资源整合——SpringData(课时十八)
108 0
|
XML 前端开发 JavaScript
《springboot实战》第一章 SpringBoot起步(下)
《springboot实战》第一章 SpringBoot起步(下)
107 0
|
前端开发 Java 应用服务中间件
《springboot实战》第一章 SpringBoot起步(上)
《springboot实战》第一章 SpringBoot起步(上)
86 0
|
JSON 前端开发 Java
【SpringBoot学习笔记 十三】SpringBoot集成Swagger3.0
【SpringBoot学习笔记 十三】SpringBoot集成Swagger3.0
660 0
|
SQL 监控 druid
06.SpringBoot核心技术
06.SpringBoot核心技术
|
Java 调度 Spring
SpringBoot与任务(十一)
SpringBoot与任务(十一)
96 0
SpringBoot与任务(十一)
|
SQL 存储 Java
SpringBoot基础学习文章
SpringBoot基础学习文章
187 0
SpringBoot基础学习文章