本文介绍在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,就可以直接在自己的对象中注入使用。

最新文章

  1. std result_of
  2. [转]Net 下采用GET/POST/SOAP方式动态调用WebService C#实现
  3. 函数执行到return就结束了
  4. [原]数据库中的partitioning和sharding
  5. [Django]models定义choices 字典中的页面显示值
  6. Android复制iPhone日期和时间选择器
  7. Python的下载和安装
  8. hibernate java.sql.SQLException
  9. Struts国际化
  10. Lua学习系列(三)
  11. 安装Hadoop及Spark(Ubuntu 16.04)
  12. Redis各种数据结构性能数据对比和性能优化实践
  13. Jmeter脚本录制方法(一)——分别使用Badboy录制和Jmeter自带的代理服务器录制
  14. angular之表达式
  15. 20165306 Exp4 恶意代码分析
  16. 编辑输出“Hello World”
  17. nginx 正向代理上网
  18. kvm虚拟化管理
  19. UVA 1395 MST
  20. shell中环境变量

热门文章

  1. 适配:px与dp转换
  2. pagination实现分页功能
  3. log4j示例-Daily方式(log4j.properties)
  4. 关于select的一个死循环
  5. jquery发送数组
  6. (转)使用 linux tar 命令压缩与解压文件
  7. 利用html5制作一个时钟动画
  8. 【翻译】用 Expression Blend 创建酷炫的 Button
  9. php header 302重定向失效问题
  10. Tkinter Spinbox