JDBCTemplate基础学习

JDBCTemplate:spring提供的用于操作数据库的模板,类似DbUtils。使用时必须设置数据源(DataSource);数据源如DBCP、C3P0等

一、JDBCAPI简单使用Demo

1、项目结构

2、创建MySQL数据库及表

create database springJDBCPro;
use springJDBCPro;
create table user(
id int primary key auto_increment,
username varchar(50),
password varchar(32)
);

创建数据库及表

3、Java代码demo

package springJDBCPro;

import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;

public class TestApp {
    @Test
    public void demo1() throws SQLException {
        //创建数据源
        BasicDataSource basicDataSource=new BasicDataSource();
        //注册驱动
        basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        //设置URL
        basicDataSource.setUrl("jdbc:mysql://localhost:3306/springJDBCPro");
        //设置登录用户名
        basicDataSource.setUsername("root");
        //设置登录密码
        basicDataSource.setPassword("hjp123");
        // 创建模板
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        //设置数据源
        jdbcTemplate.setDataSource(basicDataSource);
        //录入数据
        jdbcTemplate.update("insert into user(username,password) values(?,?)","Jack","Jac123");
    }
}

Demo

二、JDBC结合DBCP,通过spring操作数据库

1、项目结构

2、UserDao类代码

package springJDBCDBCP;

import org.springframework.jdbc.core.JdbcTemplate;

public class UserDao {
    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public void save(String username, String password) {
         jdbcTemplate.update("insert into user(username,password) values(?,?)",username,password);
    }
}

UserDao

3、beans.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                              http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- 配置数据源 -->
    <bean id="dataSourceId" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/springJDBCPro"></property>
        <property name="username" value="root"></property>
        <property name="password" value="hjp123"></property>
    </bean>
    <!-- 配置模板,需要数据源 -->
    <bean id="jdbcTemplateId" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSourceId"></property>
    </bean>
    <!-- 配置Dao,需要模板 -->
    <bean id="userDaoId" class="springJDBCDBCP.UserDao">
        <property name="jdbcTemplate" ref="jdbcTemplateId"></property>
    </bean>
</beans>

beans

4、测试Demo

package springJDBCDBCP;

import java.sql.SQLException;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestApp {
    @Test
    public void demo1() throws SQLException {
        String xmlPath="springJDBCDBCP/beans.xml";
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);
        UserDao userDao=applicationContext.getBean("userDaoId",UserDao.class);
        userDao.save("Tom", "Tom123");
    }
}

Demo

三、JDBC结合C3P0,通过spring操作数据库(下面用的是IDEA开发工具)

1、项目结构

2、在WEB-INF文件夹下新增lib文件夹,然后添加到项目Library,在lib里面添加项目结构图中的jar包

3、新建User类

package springJDBCC3P0;

/**
 * Created by JiaPeng on 2015/10/13.
 */
public class User {
    private Integer id;
    private String userName;
    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName=‘" + userName + ‘\‘‘ +
                ", password=‘" + password + ‘\‘‘ +
                ‘}‘;
    }
}

User

4、新建UserDao类,并且继承自JdbcDaoSupport,该类中会判断JDBCTemplate模板对象是否为空,为空自动创建,创建完后模板会自动添加数据源对象,所以在后面配置文件中添加UserDao的bean时,只注入数据源即可,而UserDao类中也无需有JDBCTemplate模板的可写对象。

package springJDBCC3P0;

import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

/**
 * Created by JiaPeng on 2015/10/13.
 */
public class UserDao extends JdbcDaoSupport {
    public void save(String userName, String password) {
        this.getJdbcTemplate().update("insert into user(username,password) values(?,?)", userName, password);
    }

    public User find(int id) {
        String sql = "select * from user where id=?";
        return this.getJdbcTemplate().queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(User.class), id);
    }
}

UserDao

5、新建配置文件beans.xml,配置如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--配置数据源 C3P0-->
    <bean id="datasourceId" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/springJDBCPro"></property>
        <property name="user" value="root"></property>
        <property name="password" value="hjp123"></property>
    </bean>
    <!--配置Dao,Dao继承JdbcDaoSupport类,该类会判断jdbctemplate模板是否为空,如果为空该类会创建模板对象,
    并且调用setDataSource方法,加载数据源-->
    <bean id="userDaoId" class="springJDBCC3P0.UserDao">
        <property name="dataSource" ref="datasourceId"></property>
    </bean>
</beans>

beans

6、新建测试类

package springJDBCC3P0;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by JiaPeng on 2015/10/13.
 */
public class TestApp {
    @Test
    public void demo1() {
        String xmlPath = "springJDBCC3P0/beans.xml";
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
        UserDao userDao = applicationContext.getBean("userDaoId", UserDao.class);
        User user = userDao.find(1);
        System.out.println(user);
    }
}

TestApp

时间: 2024-10-09 10:09:20

JDBCTemplate基础学习的相关文章

蓝鸥零基础学习HTML5—html+css基础

蓝鸥零基础学习HTML5-html+css基础 一.课程目标 1.了解前端开发职位:2.掌握常用标签以及语义及用法:3.掌握常用css的特性,掌握基础布局技巧:4.掌握整站规划概念. 二.适用人群 零基础积极学习html5者 三.课程简介 本课程主要讲解了 html+css的基础知识,包括html模板.标签.css基础样式.布局.表格表单.整站等等,是进行前端开发的基础.Html+css是前端开发的基础,大部分前端开发工程都需要从html+css布局开始,html+css的基础非常重要,是前端开

HTML&CSS基础学习笔记8-预格式文本

<pre>标签的主要作用是预格式化文本.被包围在 pre 标签中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre>标签的一个常见应用就是用来表示计算机的源代码.当然你也可以在你需要在网页中预显示格式时使用它. 会使你的文本换行的标签(例如<h>.<p>)绝不能包含在 <pre> 所定义的块里.尽管有些浏览器会把段落结束标签解释为简单地换行,但是这种行为在所有浏览器上并不都是一样的. 更多学习内容,就在码芽网http://www.

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac

Linux新手入门书籍推荐 鸟哥的linux私房菜-基础学习篇

这本书写的不错.赞~\(≧▽≦)/~ 2017-02-24 下午,我开始在Linux下写第一个.c程序,在终端打印hello world.gcc 源代码文件之后,输出可执行文件,但是 当我输入文件名执行它的时候,却提示我 无法找到命令.于是我找百度,查资料,花了半个小时,终于找到解决方法了, 输入"./filename"即可.... 2017-02-25 我看<基础学习篇>这本书,在P158页下面的例题讲解中找到了昨天下午异常的解析.我就很是感慨,心想:要是早看这本书,半个

Java基础学习——数组初识(1)

Java基础学习--数组初识(1) 1什么是数组 Java中常见的一种数据结构就是数组,数组可以分为一维数组.二维数组和多维数组. 数组是由一组相同的变量组成的数据类型,数组中每个元素具有相同的数据类型,数组中的每个元素都可以用一个统一的数组名和下标来确定. 2 数组的使用 数组的一般使用步骤: 声明数组 分配内存给该数组 下面是一维数组为例: 数据类型  数组名 []: 数组名 = new 数据类型 [数据个数]: 2.1一维数组的声明与赋值 1.数组的声明 int  num [];    

零基础学习 Hadoop 如何下手

想学习hadoop,可是苦于自己没有任何的基础,不知道该如何下手,也不知道自己能不能学会.其实零基础学习hadoop,没有想象的那么困难.曾经我也是一位小白,刚接触到云计算,想过培训,但是培训机构的选择也让我很纠结,就自己开始去摸索学习,现在我把自己的学习思路整理一下,希望对大家有帮助. 首先整体说一下学习过程给大家借鉴: 一.了解hadoop: 这里不具体阐述概念,有兴趣的同学可以自己上网去查.我们知道hadoop,有单机安装,伪分布安装和分布安装.同时hadoop的环境是Linux,所以我们

HTML&CSS基础学习笔记13—无序列表

无序列表 有时我们的工作繁忙,杂事很多,怕忘记,就会把事情一件件列出来,防止忘记. 它们的排列顺序对于我们来说并不重要,可以随意调换,我们将它称为无序列表,HTML里用<ul>标签来表示无序列表,列表里的项目则用<li>标签来表示: 1 2 3 4 5 <ul>     <li></li>     <li></li>     ... </ul> 看一段实例代码: 对于的浏览器显示结果是这样的: 更多内容学习,请

javascript基础学习(十五)

javascript之cookie 学习要点: cookie介绍 创建与获取cookie cookie的编码 cookie的生存期 cookie的路径 cookie的domain cookie的secure 一.cookie介绍 cookie实际上就是一些信息,这些信息以文件的形式存储在客户端计算机上.在javascript中,cookie主要用来保存状态,或用于识别身份. 二.创建与获取cookie 创建cookie的语法代码如下所示:document.cookie="name=value&q

javascript基础学习(八)

javascript之日期对象 学习要点: 日期对象 将日期对象转换为字符串 将日期对象中的日期和时间转换为字符串 日期对象中的日期 日期对象中的时间 设置日期对象中的日期 设置日期对象中的时间 与毫秒相关的方法 一.日期对象 在javascript中并没有日期型的数据类型,但是提供了一个日期对象可以操作日期和时间. 日期对象的创建: new Date(); 二.将日期对象转换为字符串 将日期对象转换为字符串可以使用以下4种方法: date.toString();//将日期对象转换为字符串时,采