spring通過jdbc連接數(shù)據(jù)庫
本文實(shí)例為大家分享了spring通過jdbc連接數(shù)據(jù)庫的具體代碼,供大家參考,具體內(nèi)容如下
首先看下整個(gè)工程的架構(gòu)目錄:

需要的jar包:

一、建表
create table student( id int primary key auto_increment, name varchar(32), age int, phone varchar(32) );
二、新建與數(shù)據(jù)庫對(duì)應(yīng)JavaBean
package com.etoak.bean;
public class Student {
/**
* 一個(gè)標(biāo)準(zhǔn)的javaBean對(duì)象 :
* 表字段對(duì)應(yīng)的屬性
* 屬性對(duì)應(yīng)的getter、setter方法
* 無參構(gòu)造器
* 除id[主鍵]之外其他參數(shù)組成的構(gòu)造器
* 所有參數(shù)組成的構(gòu)造器
*/
private Integer id;
private String name;
private Integer age;
private String phone;
public Student() {
super();
}
public Student(String name, Integer age, String phone) {
super();
this.name = name;
this.age = age;
this.phone = phone;
}
public Student(Integer id, String name, Integer age, String phone) {
super();
this.id = id;
this.name = name;
this.age = age;
this.phone = phone;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
三、spring的applicationContext配置文件
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <!-- 使用spring提供的整合jdbc功能 需要導(dǎo)入DAO層提供的兩個(gè)jar包[spring-jdbc spring-tx] 通過ioc依賴注入 將JdbcTemplate注入給StuDaoImpl --> <bean id="dao" class="com.etoak.dao.StuDaoImpl"> <!-- name="jt" setJt(JdbcTemplate jt) ref="jt" id="jt" 自定義對(duì)象 ref="" --> <property name="jt" ref="jt"></property> </bean> <bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="ds"></property> </bean> <!-- 此時(shí)的JdbcTemplate還不具備數(shù)據(jù)庫連接能力 為了讓其具備數(shù)據(jù)庫連接能力,需要為其提供DataSource 連接池、數(shù)據(jù)源 setDataSource(DataSource ds) 需要在ioc容器中再配置一個(gè)DataSource對(duì)象: driverClassName url username password maxIdle maxActive maxWait DataSource 接口 1 實(shí)現(xiàn)類 BasicDataSource commons-dbcp.jar spring框架自帶了DataSource實(shí)現(xiàn)類 DriverManagerDataSource setDriverClassName(String driver) setUrl(String url) setUsername(String u) setPassword(String p) [ ref屬性 : 表示調(diào)用該方法需要注入的數(shù)據(jù)類型 : 自定義類型/引用類型 value屬性 : 表示調(diào)用該方法需要注入的數(shù)據(jù)類型 : 基本數(shù)據(jù)類型/String類型/Class類型 ] 2 工廠bean --> <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/etoak"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> </beans>
四、編寫Dao
package com.etoak.dao;
import java.util.List;
import java.util.Map;
import org.springframework.jdbc.core.JdbcTemplate;
import com.etoak.bean.Student;
/**
* 使用jdbc方式對(duì)student表數(shù)據(jù)進(jìn)行CRUD操作
* 1 傳統(tǒng)的jdbc開發(fā)方式 [ConFactory ...]
* 2 spring提供的整合方案 JdbcTemplate
*/
public class StuDaoImpl {
private JdbcTemplate jt;
public void setJt(JdbcTemplate jt) {
this.jt = jt;
}
/**
* JdbcTemplate將連接數(shù)據(jù)庫執(zhí)行添加操作的流程封裝在其update(sql)
*/
public boolean addStu(Student stu){
String sql = "insert into student values(null,?,?,?)";
Object[] args = {stu.getName() , stu.getAge() , stu.getPhone()};
int result = jt.update(sql , args);
// result 執(zhí)行當(dāng)前操作影響的數(shù)據(jù)量
return result==1;
}
public boolean delStuById(Integer id){
String sql = "delete from student where id="+id;
return jt.update(sql)==1;
}
public boolean updateStu(Student stu){
String sql = "update student set name=?,age=?,phone=? where id=?";
Object[] args = {stu.getName() , stu.getAge() , stu.getPhone() , stu.getId()};
return jt.update(sql , args)==1;
}
/**
* jt.queryForMap(sql) - Map
* Jdbc不是ORM工具,不知道sql查詢的對(duì)應(yīng)哪個(gè)對(duì)象
* 只能將查詢出的關(guān)系型數(shù)據(jù)封裝在一個(gè)Map集合中返回
* {字段名=字段值,...}
* map.get("id/name/age/phone")
* 注意 :
* 在使用queryForMap(sql)查詢單條數(shù)據(jù)時(shí)
* 必須能夠確保根據(jù)傳入的sql語句能夠并且只能查詢出單條數(shù)據(jù)
* 否則使用該方法會(huì)拋出異常
*/
public Map selStuById(Integer id){
String sql = "select * from student where id="+id;
Map map = jt.queryForMap(sql);
return map;
}
// List<Map> 每一個(gè)student被封裝成了一個(gè)Map對(duì)象
public List selectAllStus(){
String sql = "select * from student";
return jt.queryForList(sql);
}
public int selectStuCount(){
String sql = "select count(*) from student";
return jt.queryForInt(sql);
}
public List selectStusByPage(int start , int max){
String sql = "select * from student limit ?,?";
Object[] args = {start , max};
return jt.queryForList(sql , args);
}
}
五、測試
package com.etoak.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.etoak.bean.Student;
import com.etoak.dao.StuDaoImpl;
public class Test {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
StuDaoImpl dao = (StuDaoImpl)ac.getBean("dao");
Student stu = new Student("sheldon",30,"111");
boolean flag = dao.addStu(stu);
System.out.println(flag);
}
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java使用JDBC連接數(shù)據(jù)庫的五種方式(IDEA版)
- Java 如何使用JDBC連接數(shù)據(jù)庫
- Java連接數(shù)據(jù)庫JDBC技術(shù)之prepareStatement的詳細(xì)介紹
- JDBC利用C3P0數(shù)據(jù)庫連接池連接數(shù)據(jù)庫
- Java實(shí)現(xiàn)JDBC連接數(shù)據(jù)庫簡單案例
- java使用jdbc連接數(shù)據(jù)庫簡單實(shí)例
- Java基于JDBC連接數(shù)據(jù)庫及顯示數(shù)據(jù)操作示例
- Spring的連接數(shù)據(jù)庫以及JDBC模板(實(shí)例講解)
- Java中JDBC連接數(shù)據(jù)庫詳解
- java 中JDBC連接數(shù)據(jù)庫代碼和步驟詳解及實(shí)例代碼
- Spring Boot JDBC 連接數(shù)據(jù)庫示例
- Java編程中使用JDBC API連接數(shù)據(jù)庫和創(chuàng)建程序的方法
- java開發(fā)中基于JDBC連接數(shù)據(jù)庫實(shí)例總結(jié)
- Java基礎(chǔ)之JDBC的數(shù)據(jù)庫連接與基本操作
相關(guān)文章
解決MyEclipse6.5無法啟動(dòng),一直停留剛開始啟動(dòng)界面的詳解
本篇文章是對(duì)解決MyEclipse6.5無法啟動(dòng),一直停留剛開始啟動(dòng)界面的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
淺談Java的虛擬機(jī)結(jié)構(gòu)以及虛擬機(jī)內(nèi)存的優(yōu)化
這篇文章主要介紹了Java的虛擬機(jī)結(jié)構(gòu)以及虛擬機(jī)內(nèi)存的優(yōu)化,講到了JVM的堆和??臻g及GC垃圾回收等重要知識(shí),需要的朋友可以參考下2016-03-03
Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例
這篇文章主要介紹了Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之漢諾塔
漢諾塔是源于印度一個(gè)古老傳說的益智玩具。大梵天創(chuàng)造世界時(shí)做了三根石柱,在一根柱子上從下往上按大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤上不能放大圓盤,三根柱子之間一次只能移動(dòng)一個(gè)圓盤2022-02-02
JavaWeb ServletConfig作用及原理分析講解
ServletConfig對(duì)象,叫Servlet配置對(duì)象。主要用于加載配置文件的初始化參數(shù)。我們知道一個(gè)Web應(yīng)用里面可以有多個(gè)servlet,如果現(xiàn)在有一份數(shù)據(jù)需要傳給所有的servlet使用,那么我們就可以使用ServletContext對(duì)象了2022-10-10
SpringBoot優(yōu)雅接收前端請(qǐng)求參數(shù)的詳細(xì)過程
這篇文章主要介紹了SpringBoot如何優(yōu)雅接收前端請(qǐng)求參數(shù),我們可以通過@RequestParm注解去綁定請(qǐng)求中的參數(shù),將(查詢參數(shù)或者form表單數(shù)據(jù))綁定到controller的方法參數(shù)中,本文結(jié)合示例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2023-06-06
基于Java實(shí)現(xiàn)的一層簡單人工神經(jīng)網(wǎng)絡(luò)算法示例
這篇文章主要介紹了基于Java實(shí)現(xiàn)的一層簡單人工神經(jīng)網(wǎng)絡(luò)算法,結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)人工神經(jīng)網(wǎng)絡(luò)的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12
MyBatis綁定錯(cuò)誤提示BindingException:Invalid bound statement (not f
這篇文章主要介紹了MyBatis綁定錯(cuò)誤提示BindingException:Invalid bound statement (not found)的解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-01-01

