Spring JdbcTemplate

Spring作为一个一站式框架,对开发中三层架构都有着企业级的解决方案,其中对应持久层的解决方案就是Spring JdbcTemplate。
今天就详细讲解Spring JdbcTemplate的配置与使用。

项目结构图:
Spring JdbcTemplate
第一步,引入依赖。

<properties>
	<!--设定字符集为UTF-8-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!--统一管理版本号-->
    <spring.version>4.2.4.RELEASE</spring.version>
    <mysql.version>5.1.32</mysql.version>
    <druid.version>1.0.9</druid.version>
    <slf4j.version>1.6.6</slf4j.version>
</properties>

<dependencies>
    <!--Lombox插件依赖,主要是用于自动生成getter和setter方法,没有也没关系,自己写getter和setter方法就可以了-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.22</version>
        <scope>provided</scope>
    </dependency>
    <!-- Spring的依赖,引入context之后,会根据依赖的传递性,自动引入spring的其他几个核心jar包 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- Spring-jdbc的依赖,JdbcTemplate依赖的jar包 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- Spring-test的依赖,主要用于整合spring和junit环境 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
    </dependency>
    <!-- MySql的驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
    </dependency>
    <!-- druid连接池,阿里开源项目 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.version}</version>
    </dependency>
     <!-- junit4的依赖 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <!-- log4j日志 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
</dependencies>

<build>
    <plugins>
    	<!-- 编译环境,JDK8-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

第二步,编写Spring JdbcTemplate的配置文件。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-4.0.xsd">
	
	<!-- 配置JdbcTemplate,并向其中注入dataSource-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

	<!-- 配置dataSource,其属性为连接数据库需要的4个连接信息-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///db_database08"/>
        <property name="username" value="root"/>
        <property name="password" value="admin"/>
    </bean>

	<!-- 配置注解扫描,我们将dao层的实现放在com.hrp.dao.impl包下-->
    <context:component-scan base-package="com.hrp.dao.impl"/>
</beans>

第三步:准备log4j日志的配置文件。

# Global logging configuration
log4j.rootLogger=info, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

第四步:编写实体类。

package com.hrp.domain;

import lombok.Data;

@Data
public class User {
    private Integer id;
    private String name;
    private String password;
}

@Data是lombox的注解,用于生成getter和setter方法,如果没有安装这个插件的可以手写getter和setter方法,效果是一样的。

第五步:编写Dao层接口和实现类。

接口:

package com.hrp.dao;

import com.hrp.domain.User;

import java.util.List;

/**
 * @author hrp
 */
public interface UserDao {

    /**
     * 查询所有用户
     * @return
     */
    List<User> findAll();
}

实现类:

package com.hrp.dao.impl;

import com.hrp.dao.UserDao;
import com.hrp.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author hrp
 */
@Repository
public class UserDaoImpl implements UserDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public List<User> findAll() {
        return jdbcTemplate.query("select * from tb_user",new BeanPropertyRowMapper<User>(User.class));
    }
}

第六步:编写测试类,整合Spring和junit环境。

package com.hrp.test;

import com.hrp.dao.UserDao;
import com.hrp.domain.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:application.xml")
public class UserDaoTest {

    @Autowired
    private UserDao userDao;

    @Test
    public void findAllTest(){
        List<User> list = userDao.findAll();
        for (User user : list) {
            System.out.println(user);
        }
    }
}

运行结果:
Spring JdbcTemplate

Spring JdbcTemplateSpring JdbcTemplate 忘川禾 发布了6 篇原创文章 · 获赞 4 · 访问量 231 私信 关注
上一篇:Spring JdbcTemplate类的常用方法


下一篇:Spring中用到的设计模式