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.pswp.cn/news/258170.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258170.shtml
英文地址,請注明出處:http://en.pswp.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功底在此次作…