JDBCTemplate操作数据库

1:创建对应数据库的  实体类(entity):

   

package JDBCTemplate.entity;

public class User {
    private String userId;
    private String username;
    private String 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;
    }

    public String getUserId() {
        return userId;
    }

    public String getUsername() {
        return username;
    }

    public String getUstatus() {
        return ustatus;
    }
}

 

2:编写service和dao

  1)在dao里进行数据库操作

  2)调用jdbcTemplate里的update方法实现添加操作

  update(String sql,Object....args)

    update有两个参数:第一个是需要执行的sql语句,第二个是课变参数,可以有多个值,用来设置sql语句值

package JDBCTemplate.dao;

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

@Repository
public class BookdaoImpl implements BookDao{
    //注入JDBCTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    //对数据库进行增加数据操作
    @Override
    public void add(Book book) {
        //创建sql语句
        String sql = "insert int book values(?,?,?)";
//        使用update执行
        int update = jdbcTemplate.update(sql, book.getUserId(), book.getUsername(), book.getUstatus());
//        update 是执行语句时影响的行数
        System.out.println(update);
    }
}

 

3:测试方法

package JDBCTemplate;

import JDBCTemplate.entity.Book;
import JDBCTemplate.service.Bookservice;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestBook {

    @Test
    public void Testadd() {
        ApplicationContext context =
                new ClassPathXmlApplicationContext("file:E:\\IDE\\JavaEE\\src\\JDBCTemplate\\bean1.xml");

        Bookservice bookService = context.getBean("bookService", Bookservice.class);
        Book book = new Book();
        book.setUserId("1");
        book.setUsername("java");
        book.setUstatus("a");
        bookService.addBook(book);
    }
}

 

 4:查询操作

  查询返回值(例如:查询记录的条数)

    使用queryforObject(String sql,Class<T> requiredType)——第二个参数为返回值类型类

例子:

    @Override
    public int selectCount() {
        String sql = "select count(*) from book";
        Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);
        return integer;
    }

 

  查询返回对象(返回某个对象的信息):

    使用queryforObject(String sql,RowMapper<T> rowMapper,Object.....args)——

第二个参数:RowMapper,是接口,返回不同类型的数据,使用这个接口里面的实现类完成数据封装,T是需要返回的对象类型

第三个参数:sql语句中问号的值

 

    @Override
    public Book findBookInfo(String id) {

        String sql = "select * from book where user_id = ?";
        Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
        return book;
    }

 

 

 

  查询返回集合:

    使用query(String sql , RowMapper<T> rowMapper)

参数和queryforObject一样

 

    @Override
    public List<Book> findAllBook() {
        String sql = "select * from book";
        List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
        return bookList;
    }

 

 

  批量操作(操作数据库里的多条记录):

    使用batchUpdate(String sql, List<Object[]> batchArgs)

      第二个参数:List集合,添加多条记录数据

 

    //批量添加
    @Override
    public void batchAddBook(List<Object[]> batchArgs) {
        String sql = "insert into book values(?,?,?)";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        //ints是表示影响行数的一个数组
        System.out.println(Arrays.toString(ints));
    }
    @Test
    public void TestBatch() {
        ApplicationContext context =
                new ClassPathXmlApplicationContext("file:E:\\IDE\\JavaEE\\src\\JDBCTemplate\\bean1.xml");

        Bookservice bookService = context.getBean("bookService", Bookservice.class);
        List<Object[]> batchArgs = new ArrayList<>();
        Object[] o1 = {"3","java","a"};
        Object[] o2 = {"4","PHP","d"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        bookService.batchAdd(batchArgs);
    }

 

 

  

posted on 2021-08-29 16:18  倾城烟雨楼  阅读(174)  评论(0)    收藏  举报

导航