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,一经查实,立即删除!

相关文章

细数家庭安防五大乱象 何时能步入正轨

虽然智能家居行业在我国的成长已逾十个年头了,但是目前市场离成型仍然有一段距离。市场上可谓“乱象”丛生,这些绊脚石严重阻碍了行业的良性发展。市场乱象繁生,智能家居从概念炒作到价格高抬,相关预测显示,若真如电商…

HDU 1181 变形课

Problem Description呃......变形课上Harry碰到了一点小麻烦,由于他并不像Hermione那样可以记住全部的咒语而任意的将一个棒球变成刺猬什么的,可是他发现了变形咒语的一个统一规律:假设咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体. Harry已经将他所会的…

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

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

没有基础学python_python没有基础好学吗

什么是Python?Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等,Python是他们其中…

C++中的头文件和源文件

一、C编译模式 通常,在一个C程序中,只包含两类文件——cpp文件和h文件。cpp文件被称作C源文件,里面放的都是C的源代码;h文件则被称作C头文件,里面放的也是C的源代码。 C 语言支持“分别编译”(separ…

Hibernate 事物隔离级别 深入探究

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

Linked List Cycle II - LeetCode

Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note: Do not modify the linked list. Follow up:Can you solve it without using extra space? 思路:维护两个指针slow和fast。先判断是否存在环。 在判断是否…

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

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

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

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

javascript之ua与urlSchema

我们首先拿到浏览器ua: 1 var ua navigator.userAgent; 1 if (ua.indexOf("MicroMessenger") > -1) { 2 alert("微信浏览器"); 3 } 1 if (ua.indexOf("iPhone") > -1) { 2 alert("iphone"); 3 } 其…

ezdpl Linux自动化部署实战

最近把ezdpl在生产环境中实施了,再加上这段时间的一些修改,一并介绍一下。再次申明: ezdpl不是开箱即用的,需要根据自己的应用环境定制。对初学者来说使用起来反倒困难更多、风险更大。它不是一个通用的项目,更多的是提…

无法打开输入文件mysql_错误LNK1181,pip安装“无法打开输入文件”mysqlclient.lib'...

我是Python新手,正在尝试安装mysql模块,但是在解决了其他5个问题之后,我现在遇到了一个问题,当我尝试安装该模块时,会出现以下日志:PS C:\Users\poste> pip install mysqlCollecting mysqlUsing cached …

俄罗斯将封杀LinkedIn 推动个人数据本地化

北京时间11月11日上午消息,莫斯科一家法院本周四支持了在俄罗斯封杀职业社交网站LinkedIn的决定。 俄罗斯联邦通信监管局(Roskomnadzor)之前要求国内外企业从2015年9月开始,必须将所有俄罗斯用户的个人数据存储在该国境内。Linked…

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 源代码 绑定 第一次碰到这个…

HDU 4609 FFT

题目大意 给定n条边的边值,求任意取三条边能组成三角形的概率 这里概率 P valid/tot tot (n-2)*(n-1)*n/6是没问题的 valid表示合法的方式 先考虑,任意两条边组合形成方法的总数 因为边值在100000的范围内,这里组合用fft计算 得到最后形成和…

《日志管理与分析权威指南》一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…

java的自增自减_Java中自增和自减操作符(++/--)的那些事

自增()和自减(--)运算符在JAVA语言中存在着很多运算符,但是在实际开发中我们或许很少用到它们,在初次学习中却时常出现它们的身影,对于这些运算符的含义和用法,是否还记得呢?1. 概述自增操作符()和自减操作符(--)是对变…

Finished yeah!

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