JDBCTemplate使用

轉載請注入原文地址:http://www.javashuo.com/article/p-whxqwiaw-mg.html

 

一:JDBCTemplate簡介

  Spring爲各類持久化技術提供了簡單操做的模板和回調API:html

ORM持久化技術 模板類
原生JDBC org.springframework.jdbc.core.JdbcTemplate
Hibernate5.0 org.springframework.orm.hibernate5.HibernateTemplate
IBatis(MyBatis) org.springframework.orm.ibatis.SqlMapClientTemplate
JPA org.springfrmaework.orm.jpa.JpaTemplate

  其中,對於原生的JDBC編程,Spring提供了JDBCTemplate,對jdbc操做進行了一系列封裝,使得jdbc編程更加簡單。mysql

 

二:引入jar包或添加依賴

  

  數據庫驅動包則按需引入。spring

 

三:建立數據庫鏈接配置文件

1 jdbc.user=root
2 jdbc.password=123456
3 jdbc.driverClass=com.mysql.jdbc.Driver
4 jdbc.jdbcUrl=jdbc\:......

 

四:Spring託管

在Spring配置文件中,注入dataSource,從配置文件中獲取內容進行bean的初始化。sql

<context:property-placeholder location="classpath:db.properties"/> //指定數據庫鏈接配置文件
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> //託管dataSource bean
    <property name="user" value="${jdbc.user}"></property> //獲取配置文件內容對dataSource進行初始化
    <property name="password" value="${jdbc.password}"></property>
    <property name="driverClass" value="${jdbc.driverClass}"></property>
    <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> //託管jdbcTemplate,引用dataSource
    <property name="dataSource" ref="dataSource"></property>
</bean>

 

五:在代碼中使用

  1:經過Spring配置文件啓動IOC容器數據庫

//啓動IoC容器
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

  2:在IOC容器獲取jdbcTemplate實例編程

//獲取IoC容器中JdbcTemplate實例
JdbcTemplate jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");

  3:使用jdbcTemplate調用方法執行數據庫操做app

  JdbcTemplate主要提供如下五大方法:函數

  • execute方法:能夠用於執行任何SQL語句。this

  • update方法及batchUpdate方法:update方法用於執行新增、修改、刪除等語句;batchUpdate方法用於執行批處理相關語句;spa

  • query方法及queryForXXX方法:用於執行查詢相關語句;

  • call方法:用於執行存儲過程、函數相關語句。

 

  3.1)經過 update 進行插入

String sql="insert into user (name,deptid) values (?,?)";
int count= jdbcTemplate.update(sql, new Object[]{"caoyc",3});

  3.2)經過 update 進行修改

String sql="update user set name=?,deptid=? where id=?";
jdbcTemplate.update(sql,new Object[]{"zhh",5,51});

  3.3)經過 update 進行刪除

String sql="delete from user where id=?";
jdbcTemplate.update(sql,51);

  3.4)批量插入、修改、刪除

String sql="insert into user (name,deptid) values (?,?)";

List<Object[]> batchArgs=new ArrayList<Object[]>();
batchArgs.add(new Object[]{"caoyc",6});
batchArgs.add(new Object[]{"zhh",8});
batchArgs.add(new Object[]{"cjx",8});

jdbcTemplate.batchUpdate(sql, batchArgs);

 

六:在DAO層使用

  數據庫操做通常結合ORM進行使用。

  1:首先定義實體類

package com.proc;

public class User {
    private Integer id;
    private String name;
    private Integer deptid;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getDeptid() {
        return deptid;
    }
    public void setDeptid(Integer deptid) {
        this.deptid = deptid;
    }

    public String toString() {
        return "User [id=" + id + ", name=" + name + ", deptid=" + deptid + "]";
    }
}

  2:而後定義該實體類的DAO類

package com.proc;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

@Repository
public class UserDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;
    
    public User get(int id){
        String sql="select id,name,deptid from user where id=?";
        RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class);
        return jdbcTemplate.queryForObject(sql, rowMapper,id);
    }
}

  在DAO類中,定義對應實體實例的增刪查改操做方法,在方法體中,使用jdbcTemplate。

 

  3:在service層,經過dao實例調用方法,執行數據操做。

UserDao userDao=(UserDao) ctx.getBean("userDao");
System.out.println(userDao.get(53));
相關文章
相關標籤/搜索