jdbctemplate mysql 配置_Spring JDBCTemplate配置使用

一、开发环境

Windows 10

IntelliJ IDEA 2016.1 旗舰版

JDK1.8

二、项目和数据库结构

项目结构:

cc6d174532aa785e4d8e7edf736b903f.png

cc339cc9c109f92f92aedd0172dc3649.png

数据库(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');

3e4dab0a77be3667f2d2d98c1f4f5070.png

三、代码分析

1、配置上mysql的连接驱动

注意:需要引入jdbc jar包。

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

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/ispider_data

root

xxxxxx

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 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 findAllUser(){

String sql = "select * from myspringjdbcdb";

final List listAllUser = new ArrayList();

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 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 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 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多线程(同步代码块和同步函数)

线程安全问题 当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完, 另一个线程参与进来执行。导致共享数据的错误。解决办法: 对多条操作共享数据的语句,只能让一个线程都执行…

Hibernate 事物隔离级别 深入探究

目录 一、数据库事务的定义 二、数据库事务并发可能带来的问题 三、数据库事务隔离级别 四、使用Hibernate设置数据库隔离级别 五、使用悲观锁解决事务并发问题 六、使用乐观锁解决事务并发问题 Hibernate事务与并发问题处理(乐观锁与悲观锁) 一、数据库…

mysql 无论输入什么都是现实 not found_NotAPanda

前言面试竞争力越来越大,是时候撸一波Vue和React源码啦;本文从20个层面来对比Vue和React的源码区别;如果需要了解API的区别,请戳:Vue 开发必须知道的 36 个技巧React 开发必须知道的 34 个技巧文章源码:请戳…

这五张PPT告诉你,如何打造无人驾驶“最强大脑”

“英特尔在谈无人驾驶,会成为汽车制造商吗?NO!我们要为无人驾驶提供从车、连接到云的‘最强大脑’。” 在昨天于北京举行的英特尔无人驾驶分享会上,英特尔无人驾驶事业部中国区市场总监徐伟杰在主旨演讲中开门见山。 这也是英特尔无人驾驶事业部去年11月…

python的datetime举例_Python datetime模块的使用示例

1、获取当前年月日时分秒# -*- encodingutf-8 -*-import datetimenow datetime.datetime.now()print("now:{}".format(now))year now.yearprint("year:{}".format(year))month now.monthprint("month:{}".format(month))day now.dayprint(&q…

vs2015 去除 git 源代码 绑定,改成向tfs添加源码管理

除了下文的方法是将源码管理从git改成tfs之外,还要做以下几步即可 向tfs添加源码 打开源码管理(管理连接),双击打开你要向其中添加的tfs连接选中该解决方案,右键 将解决方案添加到源码管理嵌入完毕vs2015 去除 git 源代码 绑定 第一次碰到这个…

《日志管理与分析权威指南》一2.3 良好日志记录的标准

本节书摘来华章计算机《日志管理与分析权威指南》一书中的第2章 ,第2.3节,(美) Anton A. Chuvakin Kevin J. Schmidt Christopher Phillips 著 姚 军 简于涵 刘 晖 等译更多章节内容可以访问云栖社区“华章计算机”公众号查…

Python【01】【基础部分】- A

一、WHATS PYTHON ? 1、python 简介 Python(英语发音:/ˈpaɪθən/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python是纯粹的自由软件&#xff0…

Finished yeah!

终于到了最后的博客阶段,这时候才知道博客此时此刻是多么的惬意,它成了书写心声的自由平台!耗时一天完成这作业说起来也是蛮辛苦的,编译器需要新装,IDE需要熟悉,当然最主要的是之前浅入浅出的C功底在此次作…

Tomcat性能调优

1、集成apache 虽然Tomcat也可以作web服务器,但是处理静态html的速度比不上apache,且其作为web服务器的功能远不如Apache,因此把apache和tomcat集成起来,讲html和jsp功能部分进行明确的分工,让tomcat只处理jsp部分&…

河南推出近万亿PPP投资计划 郑州实现智慧城市全覆盖

1 近万亿PPP项目启动 眼下,国内财经新闻的热点聚焦在PPP开发上,这与PPP支撑国内经济平衡运行的一支强劲力量正被政府看好。就连二级市场也出现了PPP概念的抢筹现象。 9月27日,股市再一次遭遇抛售,大盘创出阶段性新低,然…

Loadrunner多服务器连接问题

今天用想增加一个压力机,在服务器管理列表里怎么也连不上,后来解决方法如下:1. 关闭所有loadrunner组件,并手动结束lr_开头的进程2.找到惠普loadrunner安装目录(C:\Program Files\HP\LoadRunner\bin),手动运行magentproc.exe即可最新内容请见作者的GitHub页:http://…

物联网安防技术融合在细分领域的应用分析

物联网的核心是业务和应用的创新。物联网技术与智能化技术的深度融合,加快了行业的智能化发展,促使了行业需求在应用层上的落地。安防技术架构是物联网架构的一个子集,传统安防是一个相对保守的行业。现代安防和物联网在业务和技术上的融合发…

强连通分量(学习心得)

定义:有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通如果有向图G的每两个顶点都强连通&#xff0c…

java for的增强_Java基础之增强for循环

平时大家for循环应该用的不少,特别是增强for循环,简单快捷。但是在增强for中做删除操作,却会抛出java.util.ConcurrentModificationException,一起来看下。上面的代码,在for循环执行完if中的remove,遍历下一…

lintcode:递归打印数字

题目 用递归打印数字 用递归的方法找到从1到最大的N位整数。 样例 给出 N 1, 返回[1,2,3,4,5,6,7,8,9]. 给出 N 2, 返回[1,2,3,4,5,6,7,8,9,10,11,...,99]. 注意 用下面这种方式去递归其实很容易: recursion(i) {if i > largest number:returnresults.add(i)r…

做免费的EDM,EmailCar看中的是挖掘数据的价值

从2008年开始,做了9年企业级EDM(电子邮件营销)服务的陆霏近日宣布,他们的产品EmailCar从4.0版本开始永久免费为企业提供电子邮件基础投递业务。 我们电子邮箱经常收到的推广邮件就属于EDM,即Email Direct Marketing。这…

java 读取split_Java报错系列——split

在String中,split方法如下:可见,split的核心在于Pattern.compile(regex).split(this, limit);Java提供Pattern,Matcher用于支持正则,可以看一个例子:运行结果是:0,1||3,4|ab|7,8|cef|8,9||11,12|kk|13,14|a|需要注意的…

VS2012生成事件

Visual Studio 事件生成功能对我们开发综合项目的过程中尤为重要。 下面以VS2012为例: 选择工程-> 属性->编译->生成事件 包括两个生成事件:预先生成事件和后期生成事件 直接在相应的文本框里编写写脚本即可,如:编译完成…

H3C Navigate 2017 | 拉近世界的距离 新华三的泛联接版图

就今天而言,联接世界的网络外延已经无限扩大,联接的方式也越来越复杂。从互联网时代的PC互联,演进到移动互联网时代手机等移动终端的互联,而即将大规模爆发的物联网应用时代,所有的事物都可能被连入网络,一…