前言:spring沾过一点点,但细节不了解,实例能力也不行,决定从头学起吧。

没有理论,只有实例代码,理论自行百度多的很的很

帖一下项目整体架构:

1、数据库建表

CREATE TABLE `customer` (
`CUST_ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`NAME` VARCHAR(100) NOT NULL,
`AGE` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`CUST_ID`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2、实体类:与数据库表customer字段一一匹配

package entity;
public class Customer {
private int cust_id;
private String name;
private int age;
public Customer() {
super();
// TODO Auto-generated constructor stub
}
public Customer(int cust_id, String name, int age) {
super();
this.cust_id = cust_id;
this.name = name;
this.age = age;
}
public int getCust_id() {
return cust_id;
}
public void setCust_id(int cust_id) {
this.cust_id = cust_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

3、接口dao和实现类

package dao;

import entity.Customer;

public interface CustomerDao {
public void insert(Customer customer);
public Customer findByCustomer(int custId);
} --------------------------------------------------------------------------------------------
package dao.impl; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import javax.sql.DataSource; import dao.CustomerDao;
import entity.Customer; public class CustomerDaoImpl implements CustomerDao { private DataSource dataSource; public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
} @Override
public void insert(Customer customer) {
String sql = "insert into customer"
+"(cust_id,name,age) values(?,?,?)";
Connection conn=null; try {
conn = dataSource.getConnection();//获取数据库连接
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, customer.getCust_id());
ps.setString(2, customer.getName());
ps.setInt(3, customer.getAge());
ps.executeUpdate();
ps.close(); } catch (Exception e) {
e.printStackTrace();
}finally{
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} @Override
public Customer findByCustomer(int custId) {
String sql="select * from customer where cust_id = ?";
Connection conn=null;
Customer customer=null;
try {
conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, custId);
ResultSet rs = ps.executeQuery();
if(rs.next()){
customer = new Customer();
customer.setCust_id(rs.getInt("cust_id"));
customer.setName(rs.getString("name"));
customer.setAge(rs.getInt("age")); }
rs.close();
ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return customer;
} }

4、spring配置文件:这里把数据源和业务拆分成2个配置

(1)Spring-Datasource.xml :数据源datasource配置

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean> </beans>

(2)Spring-Customer.xml :customer模块配置

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="customerDAO" class="dao.impl.CustomerDaoImpl">
<property name="dataSource" ref="dataSource"></property>
</bean> </beans>

(3)Spring-Module.xml :组件组合配置

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <import resource="Spring-Datasource.xml"/>
<import resource="Spring-Customer.xml"/> </beans>

5、测试类

package test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import dao.CustomerDao;
import entity.Customer; public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml");
CustomerDao customerDao=(CustomerDao) context.getBean("customerDAO");
Customer customer=new Customer(1,"yiibai",29);
customerDao.insert(customer); Customer customer1=customerDao.findByCustomer(1);
System.out.println(customer1.getName()); }
}

个人总结:会用不代表理解,但多用几次绝对可以自行了解!如果看不了繁杂的理论,那就多动手几次吧

Spring系列-JDBC实例的更多相关文章

  1. Spring系列之JDBC对不同数据库异常如何抽象的?

    前言 使用Spring-Jdbc的情况下,在有些场景中,我们需要根据数据库报的异常类型的不同,来编写我们的业务代码.比如说,我们有这样一段逻辑,如果我们新插入的记录,存在唯一约束冲突,就会返回给客户端 ...

  2. 【Spring】Spring系列4之Spring支持JDBC

    4.Spring支持JDBC 4.1.使用JdbcTemplate简化JDBC开发 也可以这么用(不推荐): 4.2.使用NamedParameterJdbcTemplate

  3. SpringMVC系列(十五)Spring MVC与Spring整合时实例被创建两次的解决方案以及Spring 的 IOC 容器和 SpringMVC 的 IOC 容器的关系

    一.Spring MVC与Spring整合时实例被创建两次的解决方案 1.问题产生的原因 Spring MVC的配置文件和Spring的配置文件里面都使用了扫描注解<context:compon ...

  4. Spring 系列: Spring 框架简介 -7个部分

    Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级 ...

  5. Spring实战6:利用Spring和JDBC访问数据库

    主要内容 定义Spring的数据访问支持 配置数据库资源 使用Spring提供的JDBC模板 写在前面:经过上一篇文章的学习,我们掌握了如何写web应用的控制器层,不过由于只定义了SpitterRep ...

  6. Spring 系列: Spring 框架简介(转载)

    Spring 系列: Spring 框架简介 http://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring AOP 和 IOC 容器入门 在 ...

  7. 【SSH框架】之Spring系列(一)

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.前言 前面更新过几篇关于 Struts2 框架和 Hibernate 框架的文章,但鉴于这两 ...

  8. 狗鱼IT教程:推介最强最全的Spring系列教程

    Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建. 简单来说,Spring是一个分层的JavaSE/EEfull-stack( ...

  9. Spring系列之AOP的原理及手动实现

    目录 Spring系列之IOC的原理及手动实现 Spring系列之DI的原理及手动实现 引入 到目前为止,我们已经完成了简易的IOC和DI的功能,虽然相比如Spring来说肯定是非常简陋的,但是毕竟我 ...

随机推荐

  1. Android API Guides---Drag and Drop

    Drag and Drop 随着Android拖/放框架,能够同意用户将数据从一个视图使用图形拖动移动到还有一个查看当前布局和下降的手势. 该框架包含一个拖放事件类,拖累听众和辅助方法和类. 尽管该框 ...

  2. 正确使用 Volatile 变量

    Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少, ...

  3. NGUI的UISprite动态染色的一种方法

    本文主要参考iwinterice 的 NGUI的UISprite动态染色的一种解决方案 文章. 参考参考,就是既参详又拷贝,-,-||| 相关理论依据,还请去移步 NGUI的UISprite动态染色的 ...

  4. 【转】一件有趣的事:我用 Python 爬了爬自己的微信朋友

    偶然了解到 Python 里的 itchat 包,它已经完成了 wechat 的个人账号 API 接口,使爬取个人微信信息更加方便. 于是乎玩心一起,打算爬一下自己的微信. 步骤核心: 网页启动not ...

  5. IE 此网站的某个加载项无法运行

    1.使用IE浏览器 发生问题,一直以为是浏览器安全设置出问题,将IE安全级别调到最低,还是同样的问题 2.转用360浏览器(IE内核) 问题一样,提示略有不同 点击需要运行的java程序 解决方法 1 ...

  6. [转]MySQL-5.7 Update语句详解

    原文地址:https://www.cnblogs.com/tongxiaoda/p/7908977.html .语法 (1)单表 UPDATE [LOW_PRIORITY] [IGNORE] tabl ...

  7. JS获取电脑或手机屏幕的分辨率

    s = " 屏幕分辨率的高:"+ window.screen.height+"\n"; s += " 屏幕分辨率的宽:"+ window.s ...

  8. kafka 怎么保证的exactly once

    Kafka auto.offset.reset值详解 发表于2017/7/6 11:25:22  1010人阅读 分类: Kafka 昨天在写一个java消费kafka数据的实例,明明设置auto.o ...

  9. android App抓包工具的应用(转)

    安装好 fiddler ,手头有一部Android 手机,同时 还要有无线网,手机和 电脑在同一个无线网络.这些条件具备,我们就可以 开始下面的步骤了. 正题 :Fiddler 主菜单 Tools - ...

  10. C#使用BeginInvoke和EndInvoke异步下载和获取返回结果

    场景:为了防止UI卡死,使用异步下载文件 问题:采用多线程下载,关闭窗口后下载线程不能停止,线程操作麻烦. 参考:C#客户端的异步操作: http://www.cnblogs.com/fish-li/ ...