spring JDBC

  加入对commons-dbcp  spring-jdbc  spring-tx的依赖

1.数据源的配置  

  

获取数据源在spring中的Bean管理默认已经是单例模式
关闭数据源destroy-method="close"
作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="$jdbc:mysql:///mydb"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>

不在配置中将数据源配置写死

新建配置文件db.properties 

jdbc.driver=com.mysql.jdbc.Driver
jdbc.uril=jdbc:mysql:///mydb
jdbc.username=root
jdbc.password=root

在applicationContext添加配置

<!-- 读取db.properties文件 使用${key}获取文件中的配置项 -->
<context:property-placeholder location="db.properties"/> <!-- 数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>

2.JdbcTemplate配置,用于执行sql

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 需要构造方法注入一个数据源 ref是上面数据源的id -->
<constructor-arg name="dataSource" ref="dataSource"/>
</bean>

举例

@Named
public class StudentDao { @Inject/* 交给spring管理的类注入 ,属性名和id名最好一致
因为先是byName,找不到后byType*/
private JdbcTemplate jdbcTemplate; public void save(Student stu) {
String sql = "insert into student(name,address) values(?,?)";
// 添加,删除,更新都是用update
jdbcTemplate.update(sql, stu.getName(),stu.getAddress());
} public Student findById(int id) {
String sql = "select * from student where id = ?";
return jdbcTemplate.queryForObject(sql, new StudentRowMapper(), id);
} public List<Student> findAll() {
String sql = "select * from student";
return jdbcTemplate.query(sql, new StudentRowMapper());
} private class StudentRowMapper implements RowMapper<Student> { public Student mapRow(ResultSet rs, int arg1) throws SQLException {
Student stu = new Student();
stu.setAddress(rs.getString("address"));
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
return stu;
}
}
}

跟jdbcTemplate类似,NamedParameterJdbcTemplate也是用于执行sql,但是不常用

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg name="dataSource" ref="dataSource"/>
</bean>

举例

@Named
public class StudentDao { @Inject
private NamedParameterJdbcTemplate jdbcTemplate; public void save(Student stu) {
// 引用占位符
String sql = "insert into student(name,address) values(:name,:address)"; /* 本质上
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", stu.getName());
map.put("address", stu.getAddress());
jdbcTemplate.update(sql,map);*/ /* 当:name,:address和Student中的属性名字相同时可以这样用*/
//SqlParameterSource sps = new BeanPropertySqlParameterSource(stu);
/* 即使:name,:address不相同,可以这样用 链式调用 */
SqlParameterSource sps = new MapSqlParameterSource().addValue("name", stu.getName()).addValue("address", stu.getAddress()); jdbcTemplate.update(sql,sps);
} public Student findById(int id) {
String sql = "select * from student where id = :id"; /*本质上
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", id);
return jdbcTemplate.queryForObject(sql,map,new StudentRowMapper());
*/ //当:id和Student中的属性名字相同时可以这样用
SqlParameterSource sps = new MapSqlParameterSource("id",id); return jdbcTemplate.queryForObject(sql,sps,new StudentRowMapper());
} public List<Student> findAll() {
String sql = "select * from student";
// query必须要传进去一个map,这是构造方法规定的
return jdbcTemplate.query(sql,new HashMap<String, Object>(),new StudentRowMapper());
} private class StudentRowMapper implements RowMapper<Student> { public Student mapRow(ResultSet rs, int arg1) throws SQLException {
Student stu = new Student();
stu.setAddress(rs.getString("address"));
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
return stu;
}
}
}

spring jdbc 笔记3的更多相关文章

  1. Spring笔记——Spring+JDBC组合开发

      使用Spring+JDBC集成步骤如下:   1. 配置数据源 2. 配置事务.配置事务时,需要在xml配置文件中引入用于声明事务的tx命名空间,事务的配置方式有两种:注解方式和基于XML配置方式 ...

  2. Spring学习笔记(五)—— Spring整合JDBC

    一.Spring对JDBC的支持 Spring提供了很多模板整合Dao技术 与JDBC的整合中,Spring中提供了一个可以操作数据库的对象——JdbcTemplate,该对象封装了JDBC技术,与D ...

  3. Spring笔记05(Spring JDBC三种数据源和ORM框架的映射)

    1.ORM框架的映射 01.JDBC连接数据库以前的方式代码,并给对象赋值 @Test /** * 以前的方式jdbc */ public void TestJdbc(){ /** * 连接数据库的四 ...

  4. struts2,hibernate,spring整合笔记(2)

    上一话struts2,hibernate,spring整合笔记(1) 接下来继续 配置完struts之后就要开始hibernate的配置 hibernate的环境并不依赖web开发环境,在我第一次配置 ...

  5. spring学习笔记(一) Spring概述

    博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...

  6. 【JDBC 笔记】

    JDBC 笔记 作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 对应pdf版:https://download.csdn.net/download/qq_22430159/10754554 没有积分 ...

  7. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  8. 不错的Spring学习笔记(转)

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  9. Spring学习笔记(六)—— SSH整合

    一.整合原理 二.整合步骤 2.1 导包 [hibernate] hibernate/lib/required hibernate/lib/jpa 数据库驱动 [struts2] struts-bla ...

随机推荐

  1. SGU 242 Student&#39;s Morning 网络流(水

    题目链接:contest=0&problem=242">点击打开链接 题意: 给定n个人,m个终点 以下n行表示每一个人能够去m个点. 每一个人仅仅能去一个点. 输出随意一个方 ...

  2. oracle rman异机恢复

      Oracle源主机 Oracle目标主机 主机平台 CentOS6.2(final) CentOs6.2(FInal) 主机名 vick rman IP地址 192.168.1.11 192.16 ...

  3. 今天研究了下webservice 终于OK了

    今天研究了下webservice 终于OK了,所以把它写到自己的博客来,因为网上说的都很复杂     而在这里,我会很简单的说明,一看就懂     首先在进行webservice  一定要下载包    ...

  4. Webform之FileUpload(上传按钮控件)简单介绍及下载、上传文件时图片预览

    1.FileUpload上传控件:(原文:http://www.cnblogs.com/hide0511/archive/2006/09/24/513201.html) FileUpload 控件显示 ...

  5. Linux新手笔记 sudo

    centos 6.4 32bit 你是也像我一样,厌烦了在root用户和个人用户之间来回切换.或者干脆直接用root用户.可以这样设置,然后在命令前加sudo 即可使用自己到密码,临时用root身份执 ...

  6. iOS中运用正则表达式

    iOS中运用正则表达式来匹配短信验证码,电话号码,邮箱等是比较常见的. 在iOS中运用正则表达式主要有三种方式: -:通过谓词下面是实例代码: - (BOOL)regularExpresionWith ...

  7. beanUtils操作bean的属性

    beanUtils操纵bean属性: 需要jar包commons-beanutils-x.x.x.jar    同时commons-beanutils-x.x.x.jar需要commons-loggi ...

  8. jackson的简单实用实例(json)

    一个json格式的字符串比如: {"status":10001,"code":"HDkGzI","pubkey":&qu ...

  9. 基于FPGA的key button等开关消抖,按键消抖电路设计

    最近要用上一个key消抖的功能.于是找到了之前写的并放入博客的程序,发现居然全部有问题.http://www.cnblogs.com/sepeng/p/3477215.html —— 有问题,包括很多 ...

  10. inlay检验标准

    Inlay 检验标准 检验条件及要求 正常的 40W 日光灯下距离被检物 50cm,眼睛距离被检物 30cm,与被检物呈 45 度角,目视检 使用强光灯箱透视其内部结构 适用范围 Inlay 中料 检 ...