【学习笔记】Spring JdbcTemplate (3-3-3)
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)的更多相关文章
- Spring学习笔记--spring+mybatis集成
前言: 技术的发展, 真的是日新月异. 作为javaer, 都不约而同地抛弃裸写jdbc代码, 而用各种持久化框架. 从hibernate, Spring的JDBCTemplate, 到ibatis, ...
- Spring学习笔记--Spring IOC
沿着我们上一篇的学习笔记,我们继续通过代码学习IOC这一设计思想. 6.Hello类 第一步:首先创建一个类Hello package cn.sxt.bean; public class Hello ...
- Spring学习笔记:jdbcTemplate和数据源配置
一.使用Spring框架jdbcTemplate实现数据库的增删改查 1.数据库 /* SQLyog Ultimate v8.32 MySQL - 5.7.19-log : Database - in ...
- Spring学习笔记--Spring配置文件和依赖注入
Spring配置文件 1.alias:设置别名,为bean设置别名,并且可以设置多个别名; <!-- 设置别名 --> <alias name="user" al ...
- Spring Cloud学习笔记--Spring Boot初次搭建
1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...
- Spring4.0学习笔记(12) —— JDBCTemplate 操作数据库
整体配置 1.配置xml文件 <beans:beans xmlns="http://www.springframework.org/schema/mvc" xmlns:xsi ...
- [spring入门学习笔记][spring的IoC原理]
什么叫IoC 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependency ...
- Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目
最近一段时间一直在学习Spring Boot,刚进的一家公司也正好有用到这个技术.虽然一直在学习,但是还没有好好的总结,今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧. Spring Boo ...
- Spring学习笔记—Spring之旅
1.Spring简介 Spring是一个开源框架,最早由Rod Johnson创建,并在<Expert One-on-One:J2EE Design and Development> ...
- Spring学习笔记——Spring中的BeanFactory与FactoryBean
BeanFactory BeanFactory是Spring的org.springframework.beans.factory下的一个接口,是Spring IOC所遵守的基本编程规范.他的实现类有D ...
随机推荐
- Angular 2 前端 http 传输 model 对象及其外键的问题
个人随笔,记录问题及思路草稿,非文章性质. 对于设备编辑场景,需要显示设备类型(外键), 前端有如下 TypeScript model(此 model 和后端实体 model 通常相对应) ...
- PostgreSql问题:ERROR: column "1" does not exist
摘录自:http://blog.csdn.net/shuaiwang/article/details/1807421 在PostgreSQL中,不论是在pgAdmin中还是在命令行控制台里面,在SQL ...
- Vue精简版风格指南
前面的话 Vue官网的风格指南按照优先级(依次为必要.强烈推荐.推荐.谨慎使用)分类,且代码间隔较大,不易查询.本文按照类型分类,并对部分示例或解释进行缩减,是Vue风格指南的精简版 组件名称 [组件 ...
- Source Insight、Xshell(putty)、Xftp
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- js_7_dom文本
dom编程核心? 绑定事件 找到标签(innerText找标签里文本内容,innerHTML找标签里所有内容) 特殊的标签:input,select,textarea ,通过.value来获取值 3. ...
- iOS学习——获取当前最顶层的ViewController
在iOS开发过程中,我们经常性会需要获取当前页面的ViewController,然后利用ViewController进行一些操作,例如在最顶层的ViewController上展示一个UIAlertCo ...
- 转-HTTP POST GET SOAP本质区别详解
原文链接:HTTP POST GET SOAP本质区别详解 一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式:在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认 ...
- 仿百度糯米TP5项目笔记
需求分析 系统三大模块 商家平台.主平台.前台模块 Thinkphp5.0实战 仿百度糯米开发多商家电商平台网盘下载 (2017-04-24 01:46:23) 转载▼ 第1章 课程简介 本章 ...
- .NET 异步多线程,Thread,ThreadPool,Task,Parallel,异常处理,线程取消
今天记录一下异步多线程的进阶历史,以及简单的使用方法 主要还是以Task,Parallel为主,毕竟用的比较多的现在就是这些了,再往前去的,除非是老项目,不然真的应该是挺少了,大概有个概念,就当了解一 ...
- CSS<img>与<a href>字体同行显示方法与对齐
1.一开始使用php的volist标签conding了这样一段代码: <volist name="result['list']" id="temp"> ...