Spring作为一个一站式框架,对开发中三层架构都有着企业级的解决方案,其中对应持久层的解决方案就是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);
}
}
}
运行结果: