Spring JDBC
Spring JDBC封装所有的JDBC API,使用Spring JDBC可以屏蔽JDBC API单调乏味的、底层细节处理工作。


POM.xml
xml
<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.hk.eshop</groupId>
<artifactId>SpringOne</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>SpringOne</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.18.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>3.2.18.RELEASE</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-full</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>aspectj</groupId>
<artifactId>aspectj-tools</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>3.2.18.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.2.18.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
</dependencies>
</project>

beans.xml
xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<context:component-scan base-package="com.hk.eshop"/>
<!--配置DBCP数据库连接池-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test01?useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<!--连接池中初始化连接数量-->
<property name="initialSize" value="1"/>
<!--连接池中连接数量最大值-->
<property name="maxActive" value="500"/>
<!--连接池中连接最大空闲连接数-->
<property name="maxIdle" value="2"/>
<!--连接池中连接最小空闲连接数-->
<property name="minIdle" value="1"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="userMng" class="com.hk.eshop.jdbc.UserMng">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
<aop:aspectj-autoproxy/>
</beans>







建表SQL
create table spring_user (
id varchar(100),
name varchar(100),
pwd varchar(100),
email varchar(100)
)


代码片段
java
package com.hk.eshop.jdbc;
import java.util.List;
public interface IUserMng {
public void saveUser(UserInfo ui);
public void updateUser(UserInfo ui);
public void deleteById(String id);
public UserInfo getUser(String id);
public List<UserInfo> find();
}
package com.hk.eshop.jdbc;
public class UserInfo {
private String id = null;
private String name = null;
private String pwd = null;
private String email = null;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
package com.hk.eshop.jdbc;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
public class UserMng implements IUserMng{
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void saveUser(UserInfo ui)
{
String sql = "insert into spring_user(id,name,pwd,email) values (?,?,?,?)";
Object [] args = {ui.getId(),ui.getName(),ui.getPwd(),ui.getEmail()};
int [] argTypes = {java.sql.Types.VARCHAR,java.sql.Types.VARCHAR,
java.sql.Types.VARCHAR,java.sql.Types.VARCHAR};
jdbcTemplate.update(sql, args,argTypes);
}
public void updateUser(UserInfo ui)
{
String sql = "update spring_user set name=?,pwd=?,email=? where id=?";
Object [] args = {ui.getName(),ui.getPwd(),ui.getEmail(),ui.getId()};
jdbcTemplate.update(sql, args);
}
public void deleteById(String id)
{
String sql = "delete from spring_user where id=?";
Object [] args = {id};
jdbcTemplate.update(sql, args);
}
public UserInfo getUser(String id)
{
String sql = "select id,name,pwd,email from spring_user where id=?";
Object [] args = {id};
RowMapper<UserInfo> rowMapper = new RowMapper<UserInfo>() {
public UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
UserInfo ui = new UserInfo();
ui.setId(rs.getString("id"));
ui.setName(rs.getString("name"));
ui.setPwd(rs.getString("pwd"));
ui.setEmail(rs.getString("email"));
return ui;
}
};
UserInfo ui = jdbcTemplate.queryForObject(sql, args, rowMapper);
return ui;
}
public List<UserInfo> find()
{
String sql = "select id,name,pwd,email from spring_user";
RowMapper<UserInfo> rowMapper = new RowMapper<UserInfo>() {
public UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
UserInfo ui = new UserInfo();
ui.setId(rs.getString("id"));
ui.setName(rs.getString("name"));
ui.setPwd(rs.getString("pwd"));
ui.setEmail(rs.getString("email"));
return ui;
}
};
List<UserInfo> list = jdbcTemplate.query(sql, rowMapper);
return list;
}
}
package com.hk.eshop.jdbc;
import java.util.List;
import javax.sql.DataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) throws Exception
{
//UserInfo ui = new UserInfo();
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
UserMng um = (UserMng)ac.getBean("userMng");
UserInfo ui = new UserInfo();
ui.setId("0");
ui.setName("java");
ui.setPwd("pwd");
ui.setEmail("java@test.com");
um.saveUser(ui);
System.out.println("saveUser############ ui.id="+ui.getId()+",ui.name="+ui.getName());
UserInfo ui2 = um.getUser("0");
System.out.println("getUser############ ui2.id="+ui2.getId()+",ui2.name="+ui2.getName());
List<UserInfo> lst = um.find();
System.out.println("find############ lst.size()="+lst.size());
um.deleteById("0");
System.out.println("deleteById############");
List<UserInfo> lst2 = um.find();
System.out.println("find############ lst2.size()="+lst2.size());
}
}
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<context:component-scan base-package="com.hk.eshop"/>
<!--配置DBCP数据库连接池-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test01?useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<!--连接池中初始化连接数量-->
<property name="initialSize" value="1"/>
<!--连接池中连接数量最大值-->
<property name="maxActive" value="500"/>
<!--连接池中连接最大空闲连接数-->
<property name="maxIdle" value="2"/>
<!--连接池中连接最小空闲连接数-->
<property name="minIdle" value="1"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="userMng" class="com.hk.eshop.jdbc.UserMng">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
<aop:aspectj-autoproxy/>
</beans>