文档章节

利用springboot使用JdbcTemplate连接数据库

啊哈关关
 啊哈关关
发布于 2017/06/02 17:33
字数 770
阅读 52
收藏 0

1.pom.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.test</groupId>
    <artifactId>jdbc</artifactId>
    <version>1.0-SNAPSHOT</version>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>

    <dependencies>
        <!--引入jdbc支持-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--引入嵌入式数据库支持h2,springboot提供自动配置的嵌入式数据库有h2,hsql,derby,即不需要提供任何连接配置就能使用-->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

我们在pom文件里可以看到,com.h2database这个库起作用的范围是runtime,也就是说,当应用程序启动时,如果Spring Boot在classpath下检测到org.h2.Driver的存在,会自动配置H2数据库连接。现在启动应用程序来观察,以验证我们的想法。

2.实体类Customer.java文件

package hello;

/**
 * Created by guanguan on 17/6/1.
 */
public class Customer {

    private long id;
    private String firstName, lastName;

    public Customer(long id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public String toString(){
        return String.format("Customer[id=%d,firstName='%s',lastName='%s']",id,firstName,lastName);

    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}


3.Application.java文件,为应用程序的入口文件,负责程序启动以及一些基础性的工作。

package hello;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jdbc.core.JdbcTemplate;

/**
 * Created by guanguan on 17/6/1.
 */
@SpringBootApplication
public class Application  implements CommandLineRunner{


    private static final Logger log = LoggerFactory.getLogger(Application.class);

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Override
    public void run(String... strings) throws Exception{

        log.info("creating tables;");

 jdbcTemplate.execute("DROP TABLE customers IF EXISTS");

        jdbcTemplate.execute("CREATE  TABLE customers (id SERIAL,first_name VARCHAR(255),last_name VARCHAR(255))");


        List<Object[]> splitUpNames = Arrays.asList("John Woo", "Jeff Dean", "Josh Bloch", "Josh Long").stream()
                .map(name -> name.split(" "))
                .collect(Collectors.toList());

        splitUpNames.forEach(name->log.info(String.format("Inserting customer record for %s,%s",name[0],name[1])));

        jdbcTemplate.batchUpdate("INSERT INTO customers(first_name,last_name) VALUES (?,?)",splitUpNames);

        log.info("Querying for customer records where first_name='Josh':");

        
        jdbcTemplate.query(
                "SELECT id, first_name, last_name FROM customers WHERE first_name = ?", new Object[] { "Josh" },
                (rs, rowNum) -> new Customer(rs.getLong("id"), rs.getString("first_name"), rs.getString("last_name"))
        ).forEach(customer -> log.info(customer.toString()));
    }


}

运行结果:

2017-06-02 10:40:54.671  INFO 13599 --- [           main] hello.Application                        : creating tables---1;
2017-06-02 10:40:54.845  INFO 13599 --- [           main] hello.Application                        : Inserting customer record for John,Woo
2017-06-02 10:40:54.845  INFO 13599 --- [           main] hello.Application                        : Inserting customer record for Jeff,Dean
2017-06-02 10:40:54.845  INFO 13599 --- [           main] hello.Application                        : Inserting customer record for Josh,Bloch
2017-06-02 10:40:54.845  INFO 13599 --- [           main] hello.Application                        : Inserting customer record for Josh,Long
2017-06-02 10:40:54.890  INFO 13599 --- [           main] hello.Application                        : Querying for customer records where first_name='Josh':
2017-06-02 10:40:54.896  INFO 13599 --- [           main] hello.Application                        : Customer[id=3,firstName='Josh',lastName='Bloch']
2017-06-02 10:40:54.896  INFO 13599 --- [           main] hello.Application                        : Customer[id=4,firstName='Josh',lastName='Long']
2017-06-02 10:40:54.898  INFO 13599 --- [           main] hello.Application                        : Started Application in 2.847 seconds (JVM running for 3.539)
2017-06-02 10:40:54.901  INFO 13599 --- [       Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@2f8f5f62: startup date [Fri Jun 02 10:40:52 CST 2017]; root of context hierarchy
2017-06-02 10:40:54.907  INFO 13599 --- [       Thread-2] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown

Process finished with exit code 0

==============================================================================3.如果是自定义的数据库

pom.xml文件

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

连接生产数据库/src/main/resources/application.yml文件

spring:
  datasource:
     url: jdbc:mysql://127.0.0.1/test
     username: root
     password: 123456
     driverClassName: com.mysql.jdbc.Driver

 

 

© 著作权归作者所有

共有 人打赏支持
啊哈关关
粉丝 7
博文 152
码字总数 72519
作品 0
深圳
程序员
Spring Boot入门资料整理

Spring Boot 初识 SpringBoot前世今生 本文主要讲述spring boot的由来,即其它诞生的背景,初衷,现状,及对未来的展望。 Spring Boot参考指南中文版--Chapter1.Spring Boot中文文档 本节提供...

小致dad
2017/11/07
0
0
SpringBoot学习【简】

这里有一个不错的专栏,推荐一下 SpringBoot 教程 SpringBoot(四):SpringBoot整合JdbcTemplate SpringBoot(五):SpringBoot整合MyBatis 尤其这两文...

anlve
05/22
0
0
springBoot 搭建web项目(前后端分离,附项目源代码地址)

概述 该项目包含springBoot-example-ui 和 springBoot-example,分别为前端与后端,前后端分离,利用ajax交互。 前端html 技术: + + + + 该项目git地址:https://github.com/jiangcaijun/sp...

开源小菜鸟2333
2017/11/01
0
0
springboot的后台系统的初步搭建

springboot的后台系统的初步搭建 基于springboot的设备管理系统的架构搭建 使用工具:idea 数据库:mysql 相关技术:shiro mybatis activemq等 (1) 新建项目 new project ,idea有专门的sprin...

代金券优惠
04/15
0
0
SpringBoot的dao层、JdbcTemplate多数据源访问实例

前言: Spring boot集成mybatis大致过程如下: (1)新建maven project,在pom.xml文件中引入相关依赖。 (2)配置文件application.yml(application.properties) (3)编写pojo实体类 (4...

wangxuwei
2017/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

谷歌 Fuchsia 上手体验,将取代Android/win10

在手机市场领域,Google表现很抢眼,毫无疑问,Android 至今在移动操作系统的市场份额占据绝对领先地位,但是 Android 仍然存在不少问题,碎片化问题严重,在平板以及大屏幕设备上表现糟糕,...

linux-tao
16分钟前
1
0
List、Array与ArrayList

数组在内存中是连续存储的,所以它的索引速度很快,而且赋值和修改元素也非常快,比如: string[] s=new string[3];//赋值 s[0]="a"; s[1]="b"; s[2]="c";//修改 s[1]="b1"; 但是数组...

shimmerkaiye
19分钟前
0
0
Linux 的Lnmp环境下为mysql添加环境变量

一.问题 在Linux 安装完Lnmp 环境后 , 连接Mysql 告诉没有这条命令 mysql -uroot -p 命令失效 因为是源码安装的,所以会出现这样的的原因 。集成环境是不会出现的。 其实很简单,只需要给m...

15834278076
21分钟前
3
0
apolloxlua include函数

include函数不是单独使用的函数, 他并不是标准库的一部分, 你可以使用include函数将某个后缀为 .aop的文档包含到你的文档流中。 因为include是单独处理流, 所以不会在主处理流程中有所表示...

钟元OSS
25分钟前
0
0
【转载分享】做一名较真的工程师

近些年与我共事过的同事,一定知道我至今仍有一个较真的性格。我会:指出同事所写代码的不当命名问题(并帮助改进);指出同事所写文档中的逻辑混乱问题(并辅以修订);指出同事所写PPT中乱...

HellerZhang
26分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部