Spring5_JdbcTemplate操作

1.JdbcTemplate概念

        Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库的操作

2.准备工作

(1)引入jar包

(2)在Spring配置文件中配置连接池

prop.jdbcDriverClassName=com.mysql.jdbc.Driver
prop.url=jdbc:mysql://localhost:3306/bookdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=UTC
prop.username=root
prop.password=123456
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

        <context:property-placeholder location="jdbc.properties"></context:property-placeholder>
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="driverClassName" value="${prop.jdbcDriverClassName}"></property>
            <property name="url" value="${prop.url}"></property>
            <property name="username" value="${prop.username}"></property>
            <property name="password" value="${prop.password}"></property>
        </bean>
</beans>

(3)创建JdbcTemplate对象,给JdbcTemplate中dataSource注入Datasource属值

注:用JdbcTemplate操作数据库连接池,所以用到配置文件属性注入,就是Spring操作Jdbc,jdbc将对象属性赋值给JdbcTemplate

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="datasource"></property>
    </bean>

(4)建立Service类和创建dao类并通过注解创建对象,Service中注入dao,daoz中注入JdbcTemplate属性,创建实体类,开启组件扫描

 XMl文件

<context:component-scan base-package="Spring06"></context:component-scan>

 实体类


public class Book {
    private int id;       //编号id
    private String bname; //书籍名称
    private String autor; //作者

    public Book() {
    }

    public Book(int id, String bname, String autor) {
        this.id = id;
        this.bname = bname;
        this.autor = autor;
    }

    public int getId() {
        return id;
    }

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

    public String getBname() {
        return bname;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", bname='" + bname + '\'' +
                ", autor='" + autor + '\'' +
                '}';
    }
}

创建以及注入代码

import Spring06.Dao.BookDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class BookService {
    @Autowired
    private BookDao bookDao;


}



import org.springframework.stereotype.Repository;

@Repository
public interface BookDao {

}



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

@Repository
public class BookDaoImpl implements BookDao{
    @Autowired
    private JdbcTemplate jdbctemplate;


}

3.JdbcTemplate操作数据库(添加操作)

public void insert(Book book){
        bookDao.insert(book);
    }


void insert(Book book);


@Override
    public void insert(Book book) {
        String sql="INSERT INTO book VALUES(?,?,?)";
        Object[] objects={book.getId(),book.getBname(),book.getAutor()};
        int update = jdbctemplate.update(sql, objects);
        System.out.println(update);
    }
@Test
    public void test1(){
        ApplicationContext context=new ClassPathXmlApplicationContext("bean6.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        Book book=new Book();
        book.setId(1);
        book.setBname("西游记");
        book.setAutor("吴承恩");
        bookService.insert(book);
    }

4.JdbcTemplate操作数据库(修改操作)

public void update(Book book){
        bookDao.update(book);
    }


void update(Book book);


@Override
    public void update(Book book) {
        String sql="UPDATE book SET autor=? WHERE id=?";
        Object[] objects={book.getAutor(),book.getId()};
        int update = jdbctemplate.update(sql, objects);
        System.out.println(update);
    }
@Test
    public void test2(){
        BookService bookService = Application();
        Book book=new Book();
        book.setId(1);
        book.setAutor("吴承恩.");
        bookService.update(book);
    }

4.JdbcTemplate操作数据库(删除操作)

 public void delete(int id){
        bookDao.dalete(id);
    }


void dalete(int id);


@Override
    public void dalete(int id) {
        String sql="DELETE FROM book WHERE id=?";
        int update = jdbctemplate.update(sql, id);
        System.out.println(update);
    }
@Test
    public void test3(){
        BookService bookService = Application();
        bookService.delete(1);
    }

4.JdbcTemplate操作数据库(查询操作--单个值)

queryForObject方法中:第一个参数代表--sql语句;第二个参数代表--返回类型class 

public int selectcount(){
        return bookDao.selectcount();
    }


int selectcount();


@Override
    public int selectcount() {
        String sql="SELECT COUNT(*) FROM book";
        Integer integer = jdbctemplate.queryForObject(sql, Integer.class);
        return integer;
    }
@Test
    public void test4(){
        BookService bookService = Application();
        int selectcount = bookService.selectcount();
        System.out.println(selectcount);
    }

5.JdbcTemplate操作数据库(查询操作--返回对象)

queryForObject方法中: 第一个参数:sql语句 第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面 实现类 完成数据封装 第三个参数:sql 语句值

public Book selectObject(int id){
        return bookDao.selectObject(id);
    }


Book selectObject(int id);


@Override
    public Book selectObject(int id) {
        String sql="SELECT * FROM book WHERE id=?";
        Book book = jdbctemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
        return book;
    }
@Test
    public void test5(){
        BookService bookService = Application();
        Book book = bookService.selectObject(4);
        System.out.println(book.toString());
    }

6.JdbcTemplate操作数据库(查询操作--返回集合)

public List<Book> selectList(){
        return bookDao.selectList();
    }


List<Book> selectList();


@Override
    public List<Book> selectList() {
        String sql="SELECT * FROM book";
        List<Book> query = jdbctemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
        return query;
    }
@Test
    public void test6(){
        BookService bookService = Application();
        List<Book> books = bookService.selectList();
        System.out.println(books);
    }

7.JdbcTemplate操作数据库(批量增加)

 //batchUpdate方法 第一个参数:sql语句 第二个参数:List集合,添加多条记录数据

注:批量插入的形式是以3数组的形式插入

public void batchinsert(List<Object[]> list){
        bookDao.batchinsert(list);
    }


void batchinsert(List<Object[]> list);


@Override
    public void batchinsert(List<Object[]> list) {
        String sql="INSERT INTO book VALUES(?,?,?)";
        int[] ints = jdbctemplate.batchUpdate(sql, list);
        System.out.println(ints.length);
    }
@Test
    public void test7(){
        BookService bookService = Application();
        List<Object[]> list=new ArrayList<>();
        Object[] objects1={"5","论语","孔子"};
        Object[] objects2={"6","孟子","孟子"};
        Object[] objects3={"7","大学","中庸"};
        list.add(objects1);
        list.add(objects2);
        list.add(objects3);
        bookService.batchinsert(list);
    }

8.JdbcTemplate操作数据库(批量修改)

public void batchupdate(List<Object[]> list){
        bookDao.batchupdate(list);
    }


void batchupdate(List<Object[]> list);


@Override
    public void batchupdate(List<Object[]> list) {
        String sql="UPDATE book SET autor=? WHERE id=?";
        int[] ints = jdbctemplate.batchUpdate(sql, list);
        System.out.println(ints.length);
    }
@Test
    public void test8(){
        BookService bookService = Application();
        List<Object[]> list=new ArrayList<>();
        Object[] objects1={"司马光",6};
        Object[] objects2={"司马亮",7};
        list.add(objects1);
        list.add(objects2);
        bookService.batchupdate(list);
    }

9.JdbcTemplate操作数据库(批量删除)

public void batchdelete(List<Object[]> list){
        bookDao.batchdelete(list);
    }


void batchdelete(List<Object[]> list);


@Override
    public void batchdelete(List<Object[]> list) {
        String sql="DELETE FROM book WHERE id=?";
        int[] ints = jdbctemplate.batchUpdate(sql, list);
        System.out.println(ints.length);
    }
 @Test
    public void test9(){
        BookService bookService = Application();
        List<Object[]> list=new ArrayList<>();
        Object[] objects1={6};
        Object[] objects2={7};
        list.add(objects1);
        list.add(objects2);
        bookService.batchdelete(list);
    }

10.总结

1.JdbcTemplate进行增删改操作没有返回值,有形参(涉及到批量操作用集合List<Object[]>,没涉及到批量操作用id值或者传类book),主要通过以数组的形式存储到集合中,进行调用方法操作

a.进行一条的增、删、改操作

 b.进行多条的增、删、改操作

2.JdbcTemplate进行查询操作有返回值,涉及到批量操作用集合List<Book>作为返回值类型,没涉及到批量操作用用类型Book或者int(Integer))

a.进行查询返回值是对象形式:

 b.进行返回值类型是数值型式:

 c.进行返回值类型式List集合形式:

 11.总体代码

prop.jdbcDriverClassName=com.mysql.jdbc.Driver
prop.url=jdbc:mysql://localhost:3306/bookdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=UTC
prop.username=root
prop.password=123456
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

        <context:property-placeholder location="jdbc.properties"></context:property-placeholder>
        <bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="driverClassName" value="${prop.jdbcDriverClassName}"></property>
            <property name="url" value="${prop.url}"></property>
            <property name="username" value="${prop.username}"></property>
            <property name="password" value="${prop.password}"></property>
        </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="datasource"></property>
    </bean>

    <context:component-scan base-package="Spring06"></context:component-scan>
</beans>
package Spring06.Service;

import Spring06.Dao.BookDao;
import Spring06.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class BookService {
    @Autowired
    private BookDao bookDao;

    public void insert(Book book){
        bookDao.insert(book);
    }

    public void update(Book book){
        bookDao.update(book);
    }

    public void delete(int id){
        bookDao.dalete(id);
    }

    public int selectcount(){
        return bookDao.selectcount();
    }

    public Book selectObject(int id){
        return bookDao.selectObject(id);
    }

    public List<Book> selectList(){
        return bookDao.selectList();
    }

    public void batchinsert(List<Object[]> list){
        bookDao.batchinsert(list);
    }

    public void batchupdate(List<Object[]> list){
        bookDao.batchupdate(list);
    }

    public void batchdelete(List<Object[]> list){
        bookDao.batchdelete(list);
    }

}
package Spring06.Dao;

import Spring06.entity.Book;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface BookDao {

    void insert(Book book);

    void update(Book book);

    void dalete(int id);

    int selectcount();

    Book selectObject(int id);

    List<Book> selectList();

    void batchinsert(List<Object[]> list);

    void batchupdate(List<Object[]> list);

    void batchdelete(List<Object[]> list);

}
package Spring06.Dao;

import Spring06.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class BookDaoImpl implements BookDao{
    @Autowired
    private JdbcTemplate jdbctemplate;


    @Override
    public void insert(Book book) {
        String sql="INSERT INTO book VALUES(?,?,?)";
        Object[] objects={book.getId(),book.getBname(),book.getAutor()};
        int update = jdbctemplate.update(sql, objects);
        System.out.println(update);
    }

    @Override
    public void update(Book book) {
        String sql="UPDATE book SET autor=? WHERE id=?";
        Object[] objects={book.getAutor(),book.getId()};
        int update = jdbctemplate.update(sql, objects);
        System.out.println(update);
    }

    @Override
    public void dalete(int id) {
        String sql="DELETE FROM book WHERE id=?";
        int update = jdbctemplate.update(sql, id);
        System.out.println(update);
    }

    @Override
    public int selectcount() {
        String sql="SELECT COUNT(*) FROM book";
        Integer integer = jdbctemplate.queryForObject(sql, Integer.class);
        return integer;
    }

    @Override
    public Book selectObject(int id) {
        String sql="SELECT * FROM book WHERE id=?";
        Book book = jdbctemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
        return book;
    }

    @Override
    public List<Book> selectList() {
        String sql="SELECT * FROM book";
        List<Book> query = jdbctemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
        return query;
    }

    @Override
    public void batchinsert(List<Object[]> list) {
        String sql="INSERT INTO book VALUES(?,?,?)";
        int[] ints = jdbctemplate.batchUpdate(sql, list);
        System.out.println(ints.length);
    }

    @Override
    public void batchupdate(List<Object[]> list) {
        String sql="UPDATE book SET autor=? WHERE id=?";
        int[] ints = jdbctemplate.batchUpdate(sql, list);
        System.out.println(ints.length);
    }

    @Override
    public void batchdelete(List<Object[]> list) {
        String sql="DELETE FROM book WHERE id=?";
        int[] ints = jdbctemplate.batchUpdate(sql, list);
        System.out.println(ints.length);
    }

}
package TestPackage;

import Spring06.Service.BookService;
import Spring06.entity.Book;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.ArrayList;
import java.util.List;

public class test06 {

    public BookService Application(){
        ApplicationContext context=new ClassPathXmlApplicationContext("bean6.xml");
        return context.getBean("bookService", BookService.class);
    }

    @Test
    public void test1(){
        BookService bookService = Application();
        Book book=new Book();
        book.setId(2);
        book.setBname("西游记");
        book.setAutor("吴承恩");
        bookService.insert(book);
    }

    @Test
    public void test2(){
        BookService bookService = Application();
        Book book=new Book();
        book.setId(1);
        book.setAutor("吴承恩.");
        bookService.update(book);
    }

    @Test
    public void test3(){
        BookService bookService = Application();
        bookService.delete(1);
    }

    @Test
    public void test4(){
        BookService bookService = Application();
        int selectcount = bookService.selectcount();
        System.out.println(selectcount);
    }

    @Test
    public void test5(){
        BookService bookService = Application();
        Book book = bookService.selectObject(4);
        System.out.println(book.toString());
    }

    @Test
    public void test6(){
        BookService bookService = Application();
        List<Book> books = bookService.selectList();
        System.out.println(books);
    }

    @Test
    public void test7(){
        BookService bookService = Application();
        List<Object[]> list=new ArrayList<>();
        Object[] objects1={"5","论语","孔子"};
        Object[] objects2={"6","孟子","孟子"};
        Object[] objects3={"7","大学","中庸"};
        list.add(objects1);
        list.add(objects2);
        list.add(objects3);
        bookService.batchinsert(list);
    }

    @Test
    public void test8(){
        BookService bookService = Application();
        List<Object[]> list=new ArrayList<>();
        Object[] objects1={"司马光",6};
        Object[] objects2={"司马亮",7};
        list.add(objects1);
        list.add(objects2);
        bookService.batchupdate(list);
    }

    @Test
    public void test9(){
        BookService bookService = Application();
        List<Object[]> list=new ArrayList<>();
        Object[] objects1={6};
        Object[] objects2={7};
        list.add(objects1);
        list.add(objects2);
        bookService.batchdelete(list);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值