zoukankan      html  css  js  c++  java
  • springboot之JdbcTemplate单数据源使用

    本文介绍在Spring Boot基础下配置数据源和通过JdbcTemplate编写数据访问的示例。

    数据源配置

    在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式。

    首先,为了连接数据库需要引入jdbc支持,在pom.xml中引入如下配置:

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    

      


    嵌入式数据库通常用于开发和测试环境,不推荐用于生产环境。Spring Boot提供自动配置的嵌入式数据库有H2、HSQL、Derby,你不需要提供任何连接配置就能使用。
    嵌入式数据库支持

    比如,我们可以在pom.xml中引入如下配置使用HSQL

    <dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <scope>runtime</scope>
    </dependency>
    

      


    以MySQL数据库为例,先引入MySQL连接的依赖包,在
    pom.xml中加入:连接生产数据源

    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.21</version>
    </dependency>
    

      

    src/main/resources/application.properties中配置数据源信息

    spring.datasource.url=jdbc:mysql://localhost:3306/test
    spring.datasource.username=dbuser
    spring.datasource.password=dbpass
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    

      


    当你将应用部署于应用服务器上的时候想让数据源由应用服务器管理,那么可以使用如下配置方式引入JNDI数据源。
    连接JNDI数据源

    spring.datasource.jndi-name=java:jboss/datasources/customers
    

      


    Spring的JdbcTemplate是自动配置的,你可以直接使用
    @Autowired来注入到你自己的bean中来使用。使用JdbcTemplate操作数据库

    举例:我们在创建User表,包含属性nameage,下面来编写数据访问对象和单元测试用例。

    • 定义包含有插入、删除、查询的抽象接口UserService
      public interface UserService {
       
      /**
      * 新增一个用户
      * @param name
      * @param age
      */
      void create(String name, Integer age);
       
      /**
      * 根据name删除一个用户高
      * @param name
      */
      void deleteByName(String name);
       
      /**
      * 获取用户总量
      */
      Integer getAllUsers();
       
      /**
      * 删除所有用户
      */
      void deleteAllUsers();
       
      }
      

        

    • 通过JdbcTemplate实现UserService中定义的数据访问操作
      @Service
      public class UserServiceImpl implements UserService {
       
      @Autowired
      private JdbcTemplate jdbcTemplate;
       
      @Override
      public void create(String name, Integer age) {
      jdbcTemplate.update("insert into USER(NAME, AGE) values(?, ?)", name, age);
      }
       
      @Override
      public void deleteByName(String name) {
      jdbcTemplate.update("delete from USER where NAME = ?", name);
      }
       
      @Override
      public Integer getAllUsers() {
      return jdbcTemplate.queryForObject("select count(1) from USER", Integer.class);
      }
       
      @Override
      public void deleteAllUsers() {
      jdbcTemplate.update("delete from USER");
      }
      }
      

        单元测试

    • @RunWith(SpringJUnit4ClassRunner.class)
      @SpringApplicationConfiguration(Application.class)
      public class ApplicationTests {
       
      @Autowired
      private UserService userSerivce;
       
      @Before
      public void setUp() {
      // 准备,清空user表
      userSerivce.deleteAllUsers();
      }
       
      @Test
      public void test() throws Exception {
      // 插入5个用户
      userSerivce.create("a", 1);
      userSerivce.create("b", 2);
      userSerivce.create("c", 3);
      userSerivce.create("d", 4);
      userSerivce.create("e", 5);
       
      // 查数据库,应该有5个用户
      Assert.assertEquals(5, userSerivce.getAllUsers().intValue());
       
      // 删除两个用户
      userSerivce.deleteByName("a");
      userSerivce.deleteByName("e");
       
      // 查数据库,应该有5个用户
      Assert.assertEquals(3, userSerivce.getAllUsers().intValue());
       
      }
       
      }
      

        



      创建对UserService的单元测试用例,通过创建、删除和查询来验证数据库操作的正确性。

    上面介绍的JdbcTemplate只是最基本的几个操作,更多其他数据访问操作的使用请参考:JdbcTemplate API

    通过上面这个简单的例子,我们可以看到在Spring Boot下访问数据库的配置依然秉承了框架的初衷:简单。我们只需要在pom.xml中加入数据库依赖,再到application.properties中配置连接信息,不需要像Spring应用中创建JdbcTemplate的Bean,就可以直接在自己的对象中注入使用。

  • 相关阅读:
    Android(java)学习笔记68:使用proguard混淆android代码
    SGU 194 Reactor Cooling
    关于流量有上下界的网络流问题的求解
    关于最小割的求解方法
    HDU 5311 Hidden String
    POJ 3548 Restoring the digits
    POJ 2062 HDU 1528 ZOJ 2223 Card Game Cheater
    ZOJ 1967 POJ 2570 Fiber Network
    HDU 1969 Pie
    HDU 1956 POJ 1637 Sightseeing tour
  • 原文地址:https://www.cnblogs.com/wlsblog/p/7443615.html
Copyright © 2011-2022 走看看