一、开发环境

Windows 10

IntelliJ IDEA 2016.1 旗舰版

JDK1.8

二、项目和数据库结构

项目结构:

数据库(MySQL 5.5.39):

/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50539
Source Host : localhost:3306
Source Database : ispider_data
Target Server Type : MYSQL
Target Server Version : 50539
File Encoding : 65001
Date: 2016-04-11 10:11:09
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `myspringjdbcdb`
-- ----------------------------
DROP TABLE IF EXISTS `myspringjdbcdb`;
CREATE TABLE `myspringjdbcdb` (
`u_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`u_name` varchar(100) NOT NULL,
`u_password` varchar(200) NOT NULL,
PRIMARY KEY (`u_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of myspringjdbcdb
-- ----------------------------
INSERT INTO `myspringjdbcdb` VALUES ('7', '张三', 'zhangsan');
INSERT INTO `myspringjdbcdb` VALUES ('8', '李四', 'lisi');
INSERT INTO `myspringjdbcdb` VALUES ('9', '王五', 'wangwu');

三、代码分析

1、配置上mysql的连接驱动

注意:需要引入jdbc jar包。

在applicationContext.xml中进行配置(包含了下文的bean配置):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/ispider_data</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>xxxxxx</value>
</property>
</bean>
<bean id="userDAO" class="springjdbc.dao.impl.UserDaoImpl">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate"/>
</property>
</bean>
<bean id="user" class="springjdbc.pojo.User">
<property name="dao">
<ref bean="userDAO"/>
</property>
</bean>
</beans>

2、UserDao.java

package springjdbc.dao;
import springjdbc.pojo.User;
import java.util.List;
/**
* Created by LTN on 2016/4/8.
*/
public interface UserDao {
List<User> findAllUser();
void create(String id, String name,String password);
void execInsert(String sql); }

3、UserDaoImp.java

package springjdbc.dao.impl;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import springjdbc.dao.UserDao;
import springjdbc.pojo.User;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; public class UserDaoImpl implements UserDao {
private JdbcTemplate jdbcTemplate;
public List<User> findAllUser(){
String sql = "select * from myspringjdbcdb";
final List<User> listAllUser = new ArrayList<User>();
jdbcTemplate.query(sql, new RowCallbackHandler() {
@Override
public void processRow(ResultSet resultSet) throws SQLException {
User u=new User();
u.setuName(resultSet.getString("u_name"));
u.setuPassword(resultSet.getString("u_password"));
u.setuId(resultSet.getString("u_id"));
listAllUser.add(u);
}
});
return listAllUser;
} @Override
public void create(String id, String name,String password) {
String SQL = "insert into myspringjdbcdb (u_id, u_name, u_password) values (?, ?, ?)";
jdbcTemplate.update(SQL, id, name,password);
System.out.println("Created Record Id = " + id + " Name = " +name + "Password = " + password);
} @Override
public void execInsert(String sql) {
jdbcTemplate.execute(sql);
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
}

注意在applicationContext.xml中配置userDAOI的 bean。

4、User.java

package springjdbc.pojo;
import springjdbc.dao.UserDao;
import java.util.List;
/**
* Created by LTN on 2016/4/8.
*/
public class User {
private String uId;
private String uName;
private String uPassword;
private UserDao dao;
public User() {
}
public void setDao(UserDao dao) {
this.dao = dao;
}
public UserDao getDao() {
return dao;
}
public String getuId() {
return uId;
}
public void setuId(String uId) {
this.uId = uId;
}
public String getuName() {
return uName;
}
public void setuName(String uName) {
this.uName = uName;
}
public String getuPassword() {
return uPassword;
}
public void setuPassword(String uPassword) {
this.uPassword = uPassword;
}
public User(String uName,String uPassword) {
this.uName=uName;
this.uPassword=uPassword;
}
public List<User> findAllUser(){
return dao.findAllUser();
}
public String toString(){
return "User [dao="+dao+", uId="+uId+", uName"+uName+", uPassword="+uPassword+"]";
}
}

注意在applicationContext.xml中配置user的bean。

5、编写测试类TestAction.java

package springjdbc.action;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import springjdbc.pojo.User;
import java.util.List;
/**
* Created by LTN on 2016/4/11.
*/
public class TestAction {
public static void main(String[] args) {
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory=new XmlBeanFactory(resource);
User user = (User) factory.getBean("user");
List<User> list=user.findAllUser();
System.out.println(list);
}
}

另一个测试类:

package springjdbc.action;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import scala.actors.threadpool.Arrays;
import springjdbc.dao.UserDao;
import springjdbc.dao.impl.UserDaoImpl;
import springjdbc.pojo.User;
import javax.sql.DataSource;
import java.util.List;
/**
* Created by LTN on 2016/4/11.
*/
public class MyTest {
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource ds) {
this.dataSource = ds;
this.jdbcTemplate = new JdbcTemplate(this.dataSource);
}
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("/conf/datasources.xml");
UserDao userDao=(UserDao)context.getBean("userDAO");
// userDao.create("003","java","psw");
String sql2="insert into myspringjdbcdb (u_id, u_name, u_password) values ('4','smith','pw007')";
userDao.execInsert(sql2);
List<User> list=userDao.findAllUser();
System.out.print(list.size());
}
}

代码完结。

四、运行后的结果

INFO - Loading XML bean definitions from class path resource [applicationContext.xml]
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/F:/workspace_idea/ISpider/WebContent/WEB-INF/lib/phoenix-4.2.2-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/F:/workspace_idea/ISpider/WebContent/WEB-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
INFO - Loaded JDBC driver: com.mysql.jdbc.Driver
[User [dao=null, uId=7, uName张三, uPassword=zhangsan], User [dao=null, uId=8, uName李四, uPassword=lisi], User [dao=null, uId=9, uName王五, uPassword=wangwu]]
Process finished with exit code 0

参考资料:

【1】Spring中的JDBCTemplate使用(非常详细的配置过程)
http://www.blogjava.net/hyljava/archive/2013/02/22/spring-jdbctemplate.html 【2】baidu: JdbcTemplae使用入门&&Spring三种连接池配置&&Spring配置文件引用外部properties文件 【3】Spring:JdbcTemplate使用指南
http://www.cnblogs.com/chenying99/archive/2012/08/06/2625936.html 【4】Spring源码学习-bean加载
http://www.blogjava.net/yangaiyou/archive/2014/08/29/417486.html

Spring JDBCTemplate配置使用的更多相关文章

  1. 【Spring】Spring的数据库开发 - 1、Spring JDBC的配置和Spring JdbcTemplate的解析

    Spring JDBC 文章目录 Spring JDBC Spring JdbcTemplate的解析 Spring JDBC的配置 简单记录-Java EE企业级应用开发教程(Spring+Spri ...

  2. Spring jdbctemplate和事务管理器 全注解配置 不使用xml

    /** * spring的配置类,相当于bean.xml */@Configuration//@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans ...

  3. Spring JdbcTemplate 的使用与学习(转)

    紧接上一篇 (JdbcTemplate是线程安全的,因此可以配置一个简单的JdbcTemplate实例,将这个共享的实例注入到多个DAO类中.辅助的文档) Spring DAO支持 http://ww ...

  4. 使用Spring JDBCTemplate简化JDBC的操作

    使用Spring JDBCTemplate简化JDBC的操作 接触过JAVA WEB开发的朋友肯定都知道Hibernate框架,虽然不否定它的强大之处,但个人对它一直无感,总感觉不够灵活,太过臃肿了. ...

  5. Apache Phoenix JDBC 驱动和Spring JDBCTemplate的集成

    介绍:Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排运行以生成标准的JDBC结果集. 直接使用HBase API.协同处理器与自己定义过滤器.对于简单查询来说,其性能 ...

  6. 基于注解的Spring事务配置

    spring采用@Transactional注解进行事务申明,@Transactional既可以在方法上申明,也可以在类上申明,方法申明优先于类申明. 1.pom配置 包括spring核心包引入以及s ...

  7. Spring JdbcTemplate 查询结果集Map反向生成Java实体(转)

    原文地址:Spring JdbcTemplate 查询结果集Map反向生成Java实体 以前写过一篇文章吐槽过Spring JdbcTemplate的queryForList方法(参见:http:// ...

  8. Spring JPA配置讲解

    JPA是Java EE5规范之一,是一个orm规范,由厂商来实现该规范.目前有hibernate,OpenJPA,TopLink和EclipseJPA等实现 Spring提供三种方法集成JPA: 1. ...

  9. [转] Spring Boot配置多个DataSource

    [From]  https://www.liaoxuefeng.com/article/001484212576147b1f07dc0ab9147a1a97662a0bd270c20000 Sprin ...

随机推荐

  1. LeetCode 251. Flatten 2D Vector

    原题链接在这里:https://leetcode.com/problems/flatten-2d-vector/ 题目: Implement an iterator to flatten a 2d v ...

  2. 表有外键所以delete报错了,这里有2种办法处理:

    表有外键所以delete报错了,这里有2种办法处理: (1)      临时设置外键失效 (2)      删除表涉及到的外键的表的数据 2.外键失效的处理方案 mysql> SET FOREI ...

  3. struts2获得需要的文件或者访问路径

    在struts2中,上传文件的时候遇到一个很好用但是失效的方法,找到如下替代.并且测试了一下request可以得到的相关路径. 得到request对象: HttpServletRequest requ ...

  4. Mina2中IoService

    Apache MINA 2 是一个开发高性能和高可伸缩性网络应用程序的网络应用框架.它提供了一个抽象的事件驱动的异步 API,可以使用 TCP/IP.UDP/IP.串口和虚拟机内部的管道等传输方式. ...

  5. String是基本的数据类型吗?

    String不是基本的数据类型,是final修饰的java类,java中的基本类型一共有8个,它们分别为: 1 字符类型:byte,char 2 基本整型:short,int,long 3 浮点型:f ...

  6. win 7命令行大全

    一.win+(X) 其中win不会不知道吧,X为代码! Win+L 锁定当前用户. Win+E 资源管理器. Win+R 运行. Win+G (Gadgets)顺序切换边栏小工具. Win+U    ...

  7. c# linq查询语句详细使用介绍

    本文介绍Linq的使用方法 linq介绍 LINQ只不过是实现IEnumerable和IQueryable接口的类的扩展方法的集合. LINQ可以查询IEnumerable集合或者IQueryable ...

  8. 2007.1.1 string.Format

    String.Format举例(C#) stringstr1 =string.Format("{0:N1}",56789); //result: 56,789.0 stringst ...

  9. 第六章 Java并发容器和框架

    ConcurrentHashMap的实现原理与使用 ConcurrentHashMap是线程安全且高效的hashmap.本节让我们一起研究一下该容器是如何在保证线程安全的同时又能保证高效的操作. 为什 ...

  10. [hdu4333]Revolving Digits

    /*注意注意:本题非hdu4333原题,而是简化版,原版有多组数据.但此代码在修改输入后依旧可以通过多组数据*/ 给出一个数字串,问有多少本质不同同构串比原串小,一样,大.同构串是指,对于原串S[1- ...