Spring与JDBC模板(jdbcTemplate)

  为了避免直接使用JDBC而带来的复杂冗长的代码

Spring提供的一个强有力的模板类 -- jdbcTemplate
简化JDBC操作

并且数据源DataSource对象与模板JdbcTemplate对象

  都可以通过Bean的形式定义在配置文件中 充分发挥了依赖注入的威力

1.jar包
Spring jdbc jar包
spring tx (事务jar包)

2.导入命名空间
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"

3.搭建分层

//beans
public class Book{
private int bid;
private String bname;
private int bprice;
} //dao
public interface IBookDao{
int addBook(Book book);
}
//impl
public class BookDaoImpl implements IBookDao{
public int addBook(Book book){ return 0;
}
} //service
public interface IBookBiz{
int addBook(Book book);
}
//impl
public class BookBizImpl implements IBookBiz{
private IBookDao dao;
public int addBook(Book book){ return dao.addBook();
}
}
//xml配置
//dao
<bean id="bookdao" class="xx.xx.BookDaoImpl"></bean> //service
<bean id="bookbiz" class="xx.xx.BookBizImpl">
<property name="dao" ref="bookdao"></property>
</bean>

4.注册数据源

注册源分为三类 如下
Spring   内置的   DriverManagerDataSource
DBCP         BasicDataSource
C3P0          ComboPooledDataSource

//DriverManagerDataSource
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///book"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean> //BasicDataSource
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///book"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean> //ComboPooledDataSource
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClasss" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///book"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
</bean> 4.jdbc的属性文件
//jdbc.properties
jdbc.driver=xxx
jdbc.url=xxx
jdbc.username=xxx
jdbc.password=xxx //xml
1.PropertyPlaceholderConfigurer 2.<context:property-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClasss" value="${jdbc.driver}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean> 1.PropertyPlaceholderConfigurer
<bean class="PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"></property>
</bean>

以上是XML中配置三种数据源 的方法

以及使用properties文件配置的方法

5.继承JdbcTemplate 实现新增一本图书

public class BookDaoImpl extends JdbcDaoSupport implements IBookDao{
public int addBook(Book book){
String sql="xxx";
return this.getJdbcTeplate().update(sql,book.getBname,book.getBprice); }
}

6.书写测试类

@Test
public void test1() {
ApplicationContext ctx =
new ClassPathXmlApplicationContext("applicationContext.xml");
IBookBiz biz = (IBookBiz) ctx.getBean("bookBiz");
Book book = new Book();
book.setBname("第二本书");
book.setBprice(10); biz.add(book);
}

运行之后 成功在数据表中 插入了一条记录

使用注解的方式实现使用JdbcTemplate连接数据库

1.DAO IMPL

@Repository
public class BookDaoImpl implements IBookDao {
@Resource
private JdbcTemplate template; public int add(Book book) {
String sql = "insert into book values(null,?,?)";
int update = getTemplate().update(sql, book.getBname(), book.getBprice());
return update;
} public JdbcTemplate getTemplate() {
return template;
} public void setTemplate(JdbcTemplate template) {
this.template = template;
}
}

2.BIZ IMPL

@Service("bookBiz")
public class BookBizImpl implements IBookBiz {
@Autowired
private IBookDao dao; public int add(Book book) {
return dao.add(book);
} public IBookDao getDao() {
return dao;
} public void setDao(IBookDao dao) {
this.dao = dao;
}
}

3.XML配置

<context:component-scan base-package="sword"></context:component-scan>

    <!--配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///book"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean> <!--jdbcTemplate-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>

【学习笔记】Spring JdbcTemplate (3-3-3)的更多相关文章

  1. Spring学习笔记--spring+mybatis集成

    前言: 技术的发展, 真的是日新月异. 作为javaer, 都不约而同地抛弃裸写jdbc代码, 而用各种持久化框架. 从hibernate, Spring的JDBCTemplate, 到ibatis, ...

  2. Spring学习笔记--Spring IOC

    沿着我们上一篇的学习笔记,我们继续通过代码学习IOC这一设计思想. 6.Hello类 第一步:首先创建一个类Hello package cn.sxt.bean; public class Hello ...

  3. Spring学习笔记:jdbcTemplate和数据源配置

    一.使用Spring框架jdbcTemplate实现数据库的增删改查 1.数据库 /* SQLyog Ultimate v8.32 MySQL - 5.7.19-log : Database - in ...

  4. Spring学习笔记--Spring配置文件和依赖注入

    Spring配置文件 1.alias:设置别名,为bean设置别名,并且可以设置多个别名; <!-- 设置别名 --> <alias name="user" al ...

  5. Spring Cloud学习笔记--Spring Boot初次搭建

    1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...

  6. Spring4.0学习笔记(12) —— JDBCTemplate 操作数据库

    整体配置 1.配置xml文件 <beans:beans xmlns="http://www.springframework.org/schema/mvc" xmlns:xsi ...

  7. [spring入门学习笔记][spring的IoC原理]

    什么叫IoC 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependency ...

  8. Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目

    最近一段时间一直在学习Spring Boot,刚进的一家公司也正好有用到这个技术.虽然一直在学习,但是还没有好好的总结,今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧. Spring Boo ...

  9. Spring学习笔记—Spring之旅

    1.Spring简介     Spring是一个开源框架,最早由Rod Johnson创建,并在<Expert One-on-One:J2EE Design and Development> ...

  10. Spring学习笔记——Spring中的BeanFactory与FactoryBean

    BeanFactory BeanFactory是Spring的org.springframework.beans.factory下的一个接口,是Spring IOC所遵守的基本编程规范.他的实现类有D ...

随机推荐

  1. 显示/隐藏Mac隐藏文件

    显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏Mac隐藏文件的命令:defaults writ ...

  2. php中session_start()函数的作用

    php中session_start()函数的作用 用$_SESION之前必须要session_start()----其中之一的功能,$_SESSION是服务器端的cookie,相当一个大数组(浏览器关 ...

  3. MYBATIS异常:INVALID BOUND STATEMENT

    1.mapper.xml中namespaces错误(***) 2.方法不存在 3.方法返回值错误

  4. 《Java编程的逻辑》终于上市了!

    2018年1月下旬,<Java编程的逻辑>终于出版上市了! 这是老马过去两年死磕到底.无数心血的结晶啊! 感谢"博客园"的广大读者们,你们对老马文章的极高评价.溢美之词 ...

  5. 2.CLI标准

    CLI  简称(CLI标准) 通用语言架构    维基百科地址: http://zh.wikipedia.org/wiki/通用语言架构 是一个开放的  技术规范  .它是由  微软  联合  惠普  ...

  6. junit4X系列--Exception

    原文出处:http://www.blogjava.net/DLevin/archive/2012/11/02/390684.html.感谢作者的无私分享. 说来惭愧,虽然之前已经看过JUnit的源码了 ...

  7. java1.8--Optional类

    身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. ...

  8. 我的踩坑之旅-代码不规范引发的“bug”

    今早公司上班,老大跟我说有一个服务老是上线,下线,问我啥情况.我回想了下我的项目部署,觉得不可能会出现这个问题呀.然后各种鼓捣,倒腾了一个早上,终于找出了罪魁祸首. 场景:我们的服务部署在亚马逊上.我 ...

  9. 微信开发获取media_id错误码汇总

    微信开发遇到的错误汇总: 1. 错误代码40001 "errcode": 40001,    "errmsg": "invalid credentia ...

  10. 邮件报警(postfix)

    postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试.在 ...