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. Java 几种动态代理实现及其性能比较

    原处出之于阿里liangf Interface: package com.sunchao.jdkdyproxy; public interface Subject { void request(); ...

  2. Linuxc - define 与 typedef的区别

    预处理就是讲一些头文件展开. 预处理还会将使用到宏定义的值替换为真正的值.宏只是单纯的字符串的替换. #define 宏定义 眼里没有语法,不用分号结尾. typedef 定义别名,是有语法的,要用分 ...

  3. python编程理念

    在python控制台输入import this之后输出如下: The Zen of Python, by Tim PetersBeautiful is better than ugly.Explici ...

  4. 解决页面引用百度地图API设置点的logo不显示问题

    在写css时需要引用一个百度的api地图,却发现设置点的logo图片不能显示,后查阅百度测试发现是图片路径的问题: 在引用的下载的html页面找到 var icon = new BMap.Icon 将 ...

  5. .net Core学习笔记2 实现列表的条件筛选,排序,分页

    打开vs,完善上次"简单粗暴"的项目 发现上次的实体类的导航属性有点问题,这是更改后的 namespace ProductMvc.Models { public class Pro ...

  6. linkinFrame--web应用举例--准备工作

    OK,前面的博客我们已经搭好了linkinFrame的项目结构,现在我们这里添加一个简单的web应用,在编写此web应用的过程中我们来一步一步的搭好自己的框架. 现在开始,这里举一个例子,一个客户的C ...

  7. Servlet--ServletRequest接口,ServletResponse接口

    ServletRequest接口 定义 public interface ServletRequest 定义一个 Servlet 引擎产生的对象,通过这个对象, Servlet 可以获得客户端请求的数 ...

  8. Git初入

    Git记录 使用git 也有一段时间了, git的入门级了解也就不再多说, 但平常使用中, 仍然会遇到很多问题, 在此记录一二. 在查资料的过程中, 发现了两个比较好的资料: 特别是第二个, 相当详细 ...

  9. hibernate的cascade

    如果项目是针对一对多的,应该在"one"方设置cascade为delete,不能在"many"方设置cascade为delete .

  10. matlab获取文件夹中的所有文件名(dir)

    当前目录中包含文件及目录如下: abc111.txt abc112.txt abc113.txt a\ (文件夹) CODE: >> dir('test')   %目录 .         ...