jdbctemplate概述

197 阅读3分钟

一、JdbcTemplate(概念和准备)

1 、什么是 JdbcTemplate(Template译为模板) ( 1 ) Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作   2 、准备工作 ( 1 )引入相关 jar 包

( 2 )在 spring 配置文件配置数据库连接池 com.alibaba.druid.pool.DruidDataSource和com.mysql.jdbc.Driver 都是引入的jar包内的类,不需要自己创建 ( 3 )配置 JdbcTemplate 对象,注入 DataSource(即数据库、数据源)   JdbcTemplate是jar包里的类,不是自己创建的。 JdbcTemplate中有个属性叫:dataSource,源码中已经为其设置了set方法,所以用的是set方法注入属性 JdbcTemplate的属性dataSource注入的正是上面数据库连接池对象,等于说把JdbcTemplate对象和数据库连接起来了  

  (4 )使用注解来创建对象和注入属性,所以需要开启组件扫描

  完整的xml:

<!-- 数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
      destroy-method="close">
    <property name="url" value="jdbc:mysql:///user_db" /><!--对应SQLyog里的数据库-->
    <property name="username" value="root" />            <!-- 用户名 -->
    <property name="password" value="4.233928" />        <!-- 密码 -->
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
</bean>

<!-- JdbcTemplate对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <!--注入dataSource属性-->
    <property name="dataSource" ref="dataSource"></property>
</bean>

<!-- 组件扫描 -->
<context:component-scan base-package="JDBC"></context:component-scan>
    二、JdbcTemplate 操作数据库(添加)

需求:在表Book中添加一行数据(下图是已经添加完的)

1、对应数据库创建实体类(三个属性对应表Book的三个参数)

package JDBC;

public class Book {

private String userid;
private String username;
private String ustatus;

public String getUserid() {
    return userid;
}

public String getUsername() {
    return username;
}

public String getUstatus() {
    return ustatus;
}

public void setUserid(String userid) {
    this.userid = userid;
}

public void setUsername(String username) {
    this.username = username;
}

public void setUstatus(String ustatus) {
    this.ustatus = ustatus;
}

}   2、接口BookDao,定义增删查改方法

package JDBC;

public interface BookDao { //添加(增) public void add(Book book); } 3、接口BookDao的实现类:BookDaoImp

  重写add(Book book)方法,向数据库的表中添加数据 JdbcTemplate是jar包org.springframework.jdbc.core中的,添加注解@Autowired后,已经自动注入到JdbcTemplate jdbcTemplate中了。

package JDBC;

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

@Repository public class BookDaoImp implements BookDao{

//按类型、自动注入了JdbcTemplate对象(jdbcTemplate即已经是有实体的对象了)
//JdbcTemplate对象对象里有增删查改的方法,用来操作数据库
@Autowired
private JdbcTemplate jdbcTemplate;

@Override
public void add(Book book) {

    //创建添加的sql语句
    String addsql = "insert into Book values(?,?,?)";
    //调用jdbcTemplate.update实现添加,book.getUserid()、book.getUsername()、book.getUstatus()对应values(?,?,?)里的三个问号
    Object[] args = {book.getUserid(), book.getUsername(), book.getUstatus()};
    int update = jdbcTemplate.update(addsql,args);
    //返回值update代表添加了几行
    System.out.println(update);//1
}

}    

4、BookService类4、BookService类5

package JDBC;

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;

@Service public class BookService {

//BookDaoImp类上添加了注解@Repository,即已经生成了他的对象
//按类型、自动注入了BookDaoImp的对象
@Autowired
private BookDao bookDao;

public void addBook(Book book){
    bookDao.add(book);
}

} 5、测试 :获取BookService类的对象bookService,调用addBook(book)。

package JDBC;

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

public class JDBCTest {

@Test
public void test(){

    ApplicationContext context = new ClassPathXmlApplicationContext("bean7.xml");
    BookService bookService = context.getBean("bookService", BookService.class);

    Book book = new Book();
    book.setUserid("1");
    book.setUsername("java");
    book.setUstatus("active");

    bookService.addBook(book);

}

}  

——一般这些是从网页上获得的,这里我们手动输入

  最终效果:

三、JdbcTemplate 操作数据库(删、改)——只需修改以下几个文件

package JDBC;

public interface BookDao { //添加(增) public void add(Book book);

//修改
public void update(Book book);

//删除(根据id删除)
public void delete(String id);

} package JDBC;

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

@Repository public class BookDaoImp implements BookDao{

//按类型、自动注入了JdbcTemplate对象
@Autowired
private JdbcTemplate jdbcTemplate;

@Override
public void add(Book book) {

    //创建添加的sql语句
    String addsql = "insert into Book values(?,?,?)";
    //调用jdbcTemplate.update实现添加,book.getUserid()、book.getUsername()、book.getUstatus()对应values(?,?,?)里的三个问号
    Object[] args = {book.getUserid(), book.getUsername(), book.getUstatus()};
    int update = jdbcTemplate.update(addsql,args);
    //返回值update代表添加了几行
    System.out.println(update);
}

@Override
public void update(Book book) {
    //根据id修改username ustatus
    String updatesql = "update Book set username=?,ustatus=?where user_id=?";
    Object[] args = {book.getUsername(), book.getUstatus(),book.getUserid(),};//注意参数顺序
    int update = jdbcTemplate.update(updatesql,args);
}

@Override
public void delete(String id) {
    //根据user_id删除
    String deletesql = "delete from Book where user_id=?";
    int update = jdbcTemplate.update(deletesql,id);