若要在spring中使用数据库,首先需要配置数据源。

1、使用数据源连接池,可以使用DBCP(Data Base Connection Pooling)

<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="username">xx</property>
        <property name="password">xx</property>
        <property name="url">xx</property>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    </bean>

2、使用spring 自带的基于JDBC驱动的数据源。spring提供了两种数据源对象:

DriverManagerDataSource:在每个连接请求时都会返回一个新建的连接。

SingleConnectionDataSource:在每个连接请求时都会返回同一个连接。可看做只有一个连接。

这两个数据源的配置与BasicDataSource配置类似,唯一的区别是BasicDataSource提供连接池功能。

3、使用JDBC模板:使用SimpleJdbcTemplate访问数据

需要在spring上下文中配置SimpleJdbcTemplate Bean:如:

    <bean id="simpleTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
        <constructor-arg ref="datasource"></constructor-arg>
    </bean>

在Dao层使用模板访问数据时:

@Component("userDao")
public class UserDaoImpl implements UserDao {
   
   private static final String INSERT_SQL = "insert into user(username,password) values(:username,:passwprd)";
   private SimpleJdbcTemplate simpleTemplate;
   
    
    public void addUser(Monkey monkey) {
        Map<String,String> params = new HashMap<String,String>();
        params.put("username", monkey.getName());
        params.put("password", monkey.getPassword());
        simpleTemplate.update(INSERT_SQL, params);
    }
    
    @Autowired
    public void setSimpleTemplate(SimpleJdbcTemplate simpleTemplate) {
        this.simpleTemplate = simpleTemplate;
    } }

4、使用spring的Dao 支持类:SimpleJdbcDaoSupport

@Component("userDao")
public class UserDaoImpl extends SimpleJdbcDaoSupport implements UserDao {
   
   private static final String INSERT_SQL = "insert into user(username,password) values(:username,:passwprd)";
   @Autowired
   public void setDatasource(DataSource datasource) {
       this.setDatasource(datasource);
   }
    public void addUser(Monkey monkey) {
        Map<String,String> params = new HashMap<String,String>();
        params.put("username", monkey.getName());
        params.put("password", monkey.getPassword());
        this.getJdbcTemplate().update(INSERT_SQL, params);
    }
}

当UserDao中配置了Datasource,则会在SimpleJdbcDaoSupport中自动创建一个SimpleJdbcTemplate实例。

JdbcDaoSupport中的一个方法:

/**
     * Set the JDBC DataSource to be used by this DAO.
     */
    public final void setDataSource(DataSource dataSource) {
        if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {
            this.jdbcTemplate = createJdbcTemplate(dataSource);
            initTemplateConfig();
        }
    }

在spring中使用数据库的更多相关文章

  1. [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction

    1.Spring中的数据库支持 把具有相同功能的代码模板抽取到一个工具类中.2.关于jdbc template的应用 jdbcTemplate模板操作类,把访问jdbc的模板抽取到template中, ...

  2. Spring中的数据库事物管理

    Spring中的数据库事物管理 只要给方法加一个@Transactional注解就可以了 例如:

  3. Spring中获取数据库表主键序列

    在程序开发中,我们经常有写数据库表的操作,数据表中经常带有主键自增序列,如何获取自增序列.spring中提供了相应的类 DataFieldMaxValueIncrementer. DataFieldM ...

  4. spring中的数据库操作类

    例子一: package cn.itcast.service.impl; import java.util.List; import javax.sql.DataSource; import org. ...

  5. Spring中使用JDBC

    Spring中的数据库异常体系 使用JDBC(不使用Spring)的时候,我们需要强制捕获SQLException,否则无法使用JDBC处理任何事情.SQLException表示尝试访问数据库的时候出 ...

  6. 在Spring Boot中使用数据库事务

    我们在前面已经分别介绍了如何在Spring Boot中使用JPA(初识在Spring Boot中使用JPA)以及如何在Spring Boot中输出REST资源(在Spring Boot中输出REST资 ...

  7. spring对数据库的操作、spring中事务管理的介绍与操作

    jdbcTemplate的入门 创建maven工程 此处省略 导入依赖 <!-- https://mvnrepository.com/artifact/org.springframework/s ...

  8. 各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包----转

    在开发基于数据库的应用系统时,需要在项目中进行数据源的配置来为数据 库的操作取得数据库连接.配置不同数据库的数据源的方法大体上都是相同的,不同的只是不同数据库的JDBC驱动类和连接URL以及相应的数据 ...

  9. spring中操作mysql数据库

    就是在spring中,对mysql数据库进行增删改查的样例,很easy. 文件结构 maven的pom.xml文件,里面用到的几个很重要的jar包都有 <project xmlns=" ...

随机推荐

  1. django知识分支_1

    django知识分支 1.Cookie工作流程: 浏览器向服务器发出请求,服务器接收到浏览器的请求进行处理,服务器设置一个cookie发送给浏览器,浏览器将cookie保存,当需要再次登录的时候,浏览 ...

  2. python模块之shutil和zipfile

    shutil 模块 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一个文件中 import shutil s ...

  3. UVA1589——xiangqi

    开始碰到这个题时觉得太麻烦了直接跳过没做,现在放假了再次看这个题发现没有想象中那么麻烦,主要是题目理解要透彻,基本思路就是用结构体数组存下红方棋子,让黑将军每次移动一下,看移动后是否有一个红方棋子可以 ...

  4. POJ:1185-炮兵阵地(状压dp入门)

    炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组 ...

  5. hdu 6333

    Problem Description There are n apples on a tree, numbered from 1 to n.Count the number of ways to p ...

  6. JAVA获取网络图片并保存到本地(随机图片接口)

    import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import j ...

  7. Memcached配置失误引发的Keystone token丢失的问题

    故障现象 近期公司的OpenStack上频繁出现虚拟机创建失败的情况,查看日志定位到问题出在neutron-server向keystone认证token失败. 故障原因 Keystone所使用的Mem ...

  8. HBase0.94.2-cdh4.2.0需求评估测试报告1.0之四

    第二组:文件存储读过程记录 第一组:一个列,四个分区,随机ID 测试列和分区 测试程序或命令 导入文件大小(Mb) 导入文件个数(个) 是否触发flush事件(布尔) 是否触发compact事件(布尔 ...

  9. UVa 11651 Krypton Number System DP + 矩阵快速幂

    题意: 有一个\(base(2 \leq base \leq 6)\)进制系统,这里面的数都是整数,不含前导0,相邻两个数字不相同. 而且每个数字有一个得分\(score(1 \leq score \ ...

  10. Python之PyFrameObject动态执行环境

    Python虚拟机中的执行环境 Python的虚拟机实际上是在模拟操作系统运行可执行文件的过程,首先,我们先来讲一下普通的x86的机器上,可执行文件是以一种什么方式运行的. 图1-1 图1-1所展示的 ...