文档章节

Spring JDBC使用方法

霍淇滨
 霍淇滨
发布于 06/18 18:15
字数 688
阅读 5
收藏 0
点赞 0
评论 0

普通实现:

1、创建数据表customer。

可以使用任何数据库实现,在项目中要引入相应数据库驱动包并配置相应数据库连接。

2、创建Customer pojo。

Customer类的属性对应数据库的属性,除了为每个属性提供相应的get和set方法外不提供任何 其他业务逻辑实现。

public class Customer {
	int custId;
	String name;
	int age;
	//getter and setter method
}

3、创建数据访问接口。

该接口声明对对数据库的所有操作,如插入删除等。

public interface CustomerDAO {
	public void insert(Customer customer);
}

4、实现数据访问。

实现数据库访问接口,提供与数据库交互的具体业务逻辑实现。该类中会调用JDBC函数。

JDBC相关知识在这篇博客

public class JdbcCustomerDAO implements CustomerDAO{
    //DataSource在Bean中配置,用于获取mysql驱动
	private DataSource dataSource;

	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}

	public void insert(Customer customer){
        //定义预处理SQL语句
		String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
		Connection conn = null;
		try {
            //连接数据库
			conn = dataSource.getConnection();
            //预处理方式执行SQL语句
			PreparedStatement ps = conn.prepareStatement(sql);
			ps.setInt(1, customer.getCustId());
			ps.setString(2, customer.getName());
			ps.setInt(3, customer.getAge());
			ps.executeUpdate();
			ps.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		} finally {
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {}
			}
		}
	}
}

5、配置bean。

<bean id="customerDAO" class="com.yiibai.customer.dao.impl.JdbcCustomerDAO">
	<property name="dataSource" ref="dataSource" />
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName" value="com.mysql.jdbc.Driver" />
	<property name="url" value="jdbc:mysql://localhost:3306/yiibaijava" />
	<property name="username" value="root" />
	<property name="password" value="password" />
</bean>

6、对数据库进行操作。

public static void main( String[] args ){
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
    CustomerDAO customerDAO = (CustomerDAO) context.getBean("customerDAO");
    Customer customer = new Customer(1, "yiibai",29);
    customerDAO.insert(customer);    
}

使用JdbcTemplate实现:

上方代码是原始实现,可以看到很多代码被用于创建连接、关闭连接、处理异常等。这样有很明显的缺点:代码冗余和容易出错。

使用JdbcTemplate可节省大量的冗余代码,因为JdbcTemplate类会自动处理它。

public class JdbcCustomerDAO implements CustomerDAO{
    private DataSource dataSource;
    //使用JdbcTemplate 
	private JdbcTemplate jdbcTemplate;

	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}

	public void insert(Customer customer){
        //定义预处理sql语句
		String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";	 
        //使用dataSource初始化jdbcTemplate
		jdbcTemplate = new JdbcTemplate(dataSource);	
        //插入数据
		jdbcTemplate.update(sql, new Object[] { customer.getCustId(),
			customer.getName(),customer.getAge()  
		});		
	}
}

使用JdbcDaoSupport实现:

通过扩展 JdbcDaoSupport,类中就不需要DataSource和JdbcTemplate句柄了,因为JdbcDaoSupport有静态方法会自动注入dataSource。而且可以使用 getJdbcTemplate()方法得到 JdbcTemplate。

public class JdbcCustomerDAO extends JdbcDaoSupport implements CustomerDAO{
    //继承JdbcDaoSupport,因为JdbcDaoSupport中有:
    //public final void setDataSource(DataSource dataSource)方法,
    //所以此类不需要持有dataSource引用
    public void insert(Customer customer){
	//定义预处理sql
	String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
	//执行插入操作  使用getJdbcTemplate()方法可以获取JdbcTemplate对象
	getJdbcTemplate().update(sql, new Object[] { customer.getCustId(),
			customer.getName(),customer.getAge()  
	});		
}

其实最后学了MyBa'tis,可以直接用逆向工程生成DAO层代码,不需要自己实现。

© 著作权归作者所有

共有 人打赏支持
霍淇滨
粉丝 17
博文 209
码字总数 167912
作品 0
南京
其他
【小马哥】Spring Boot系列讲座

这里为大家推荐一个不错的Spring Boot系列讲座,讲师介绍如下: 小马哥,阿里巴巴技术专家,从事十余年Java EE 开发,国内微服务技术讲师。目前主要负责微服务技术推广、架构设计、基础设施、...

杜琪
03/02
0
0
【小马哥】Spring Cloud系列讲座

这里为大家推荐一个不错的Spring Cloud系列讲座,讲师介绍如下: 小马哥,阿里巴巴技术专家,从事十余年Java EE 开发,国内微服务技术讲师。目前主要负责微服务技术推广、架构设计、基础设施...

杜琪
03/02
0
0
对JDBC的支持 之 7.1 概述

概述 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: //cn.javass.spring.chapter7. TraditionalJdbcTest @Test public void test() throws Exception { Connection co...

heroShane
2014/02/27
0
0
Spring MVC 使用 JNDI 配置的DataSource

稍微看了下,Spring 中JNDI 的使用,弄了个小例子。有很多不完备的地方,以后慢慢看,再改吧。 <一> 技术使用 Spring MVC JDBC Template Maven JNDI <二> 一些配置 Maven POM 配置 spring-c...

平江夜弹
2015/06/29
0
0
spring oxm入门(包含demo)

O/X Mapper 是什么? Spring 3.0 的一个新特性是 O/X Mapper。O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML。它的目的是在 Java 对象(几乎总是一个 plain old Java object,或简...

疯狂的兔子
2014/09/09
0
0
Spring里PropertyPlaceholderConfigurer类的使用

这个类是用来解析Java Properties属性文件值,并提供在spring配置期间替换使用属性值。以下是它的三种常见使用方法。 (1).基本的使用方法: spring-config.xml <bean id="propertyConfigurer...

ikkyuuC
2012/11/23
0
0
【Spring reference】Spring基于java的配置

1、简述 spring reference写到: Java-based configuration: Starting with Spring 3.0, many features provided by the Spring JavaConfig project became part of the core Spring Framewo......

666B
2014/07/01
0
0
Spring的事务管理难点剖析(4):多线程的困惑

由于Spring的事务管理器是通过线程相关的ThreadLocal来保存数据访问基础设施(也即Connection实例),再结合IoC和AOP实现高级声明式事务的功能,所以Spring的事务天然地和线程有着千丝万缕的...

icheer
2012/07/17
0
0
Spring的事务管理难点剖析(5):联合军种作战的混乱

Spring抽象的DAO体系兼容多种数据访问技术,它们各有特色,各有千秋。像Hibernate是非常优秀的ORM实现方案,但对底层SQL的控制不 太方便;而iBatis则通过模板化技术让你方便地控制SQL,但没有...

icheer
2012/07/17
0
0
Spring 3.0.0 is Now Available (2009-12-16)

Spring 3.0.0 is Now Available News and Announcements It's here just in time for the holidays! Arjen Poutsma has just announced that Spring 3.0.0 is now final and Juergen Hoeller......

晨曦之光
2012/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

第三章 spring-bean之beanFactory系列(1)

前言 spring的基本问题,每次面试基本会问题。比如 - spring是什么回答是ioc,aop,第三个就是beanfactory。 - spring使用什么模式,100%的人回答是工厂模式。 - 这面的问题大家都知道。关于...

鸟菜啊
6分钟前
0
0
箭头函数

var foo = v => v;// 等同于var foo = function (v) {return v;} 如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分 var f = () => 5;// 等同于var f = functio...

litCabbage
7分钟前
0
0
软件入门的知识之程序设计语言Java和C#的简单介绍和对比[图]

软件入门的知识之程序设计语言Java和C#的简单介绍和对比[图]: 前言: 要做软件就必然会涉及到程序设计语言,它是什么?有哪些特点?又有哪几部分组成的呢?在这里我们为大家做了一个总结,希...

原创小博客
8分钟前
0
0
重写视频播放进度条

需要注意的地方,基于html vedio 标准使用期去了解一下 1.想去掉视频默认的播放条,去掉controls属性。 2.需要预加载视频加上preload="auto"属性。 1.js代码 $(function(){ init(); }); var ...

轻量级赤影
16分钟前
0
0
saltstack管理任务计划-添加&删除

1.服务端配置 >>编辑 top.sls 文件 # vim /srv/salt/top.sls //修改为如下 base: '192.168.*.*': - crontest >>编辑crontest.sls文件添加计划任务 cron-test: cron.present: - name: /bin/to......

硅谷课堂
17分钟前
0
0
sql中多表查询及其左连字段

SELECT s.*,t.teach_name FROM `stu` s, `teacher` t WHERE s.teacher_id = t.row_id AND s.teacher_id = 1 s.* s表中 全部字段 t.teach_name t表中teach_name 字段 SELECT s.*,t.teach_nam......

森火
19分钟前
0
0
ES9-mapping参数

1.概述 ElasticSearch提供了丰富的参数对文档字段进行定义,比如字段的分词器、字段权重、日期格式、检索模型等等。可以查看官网每个参数的定义及使用:https://www.elastic.co/guide/en/ela...

贾峰uk
22分钟前
1
0
Java泛型学习

一、泛型的概念 List list = new ArrayList(); list.add("corn"); String name = (String) list.get(0); 1、这里将一个对象放入集合中,集合不会记住次对象的类型,当再次从集合中取出此对象...

cjxcloud
24分钟前
0
0
android屏幕适配

android屏幕适配 今日头条的适配方式:https://mp.weixin.qq.com/s/d9QCoBP6kV9VSWvVldVVwA 采用的是鸿阳的适配方式,项目依赖: compile 'com.zhy:autolayout:1.4.5' 使用步骤: 在manif...

android-key
28分钟前
0
0
istio 0.8 安装步骤

============================ istio 0.8 安装步骤--------------------------------------- istio 0.8 安装步骤 1.安装k8s环境 参考:http://sealyun.com/pro/products/ master,salve两台机......

xiaomin0322
30分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部