欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring——JdbcTemplate操作数据库

程序员文章站 2022-07-04 18:48:32
...

一、概念和准备

  1. 什么是JdbcTemplate?
    Spring框架对JDBC进行封装,使用JdbcTemplate可以方便的实现对数据库操作。
  2. 准备工作
    (1)引入相关的jar包和依赖
    Spring——JdbcTemplate操作数据库
    (2)在spring配置文件中配置数据库的连接池
    <!--数据库连接池配置-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <property name="url" value="jdbc:mysql:///user_db"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    </bean>

(3)配置jdbcTemplate对象,注入DataSource

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

(4)创建service类,创建dao类,在dao类注入jdbcTemplate对象

  • 配置文件
<!--组件扫描-->
    <context:component-scan base-package="org.example"></context:component-scan>
  • service类
@Service
public class BookService {
    //注入dao
    @Autowired
    private BookDao userDao;
}

  • dao类
public interface BookDao {
}

@Repository
public class BookDaoImpl implements BookDao{

    //注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;
}

二、Jdbc Template操作数据库(添加)

  1. 对应数据库表创建实体类
public class Book {
    private String bookId;
    private String bookName;
    private String bookStatus;

    public String getBookId() {
        return bookId;
    }

    public void setBookId(String bookId) {
        this.bookId = bookId;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getBookStatus() {
        return bookStatus;
    }

    public void setBookStatus(String bookStatus) {
        this.bookStatus = bookStatus;
    }
}
  1. 编写service和dao
    (1) 在dao进行数据库添加操作
public interface BookDao {
    void add(Book book);
}

@Service
public class BookService {
    //注入dao
    @Autowired
    private BookDao bookDao;

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

(2)调用jdbcTemplate对象里面的update方式实现操作。
Spring——JdbcTemplate操作数据库
有两个参数:第一个参数是sql语句,第二个参数是可变参数,设置sql语句值。

@Repository
public class BookDaoImpl implements BookDao{

    //注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void add(Book book) {
        //1. 创建sql语句
        String sql = "insert into t_book values(?,?,?)";
        //2. 调用方法实现
        int update = jdbcTemplate.update(sql, book.getBookId(), book.getBookName(), book.getBookStatus());
        System.out.println(update);
    }
}

三、JdbcTemplate操作数据库(修改和删除)

    @Override
    public void updateBook(Book book) {
        String sql = "update t_book set book_name=?,book_status=? where book_id=?";
        Object[] args = {book.getBookName(), book.getBookStatus(), book.getBookId()};
        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }

    @Override
    public void delete(String id) {
        String sql = "delete from t_book where book_id=?";
        int update = jdbcTemplate.update(sql, id);
        System.out.println(update);
    }

四、JdbcTemplate操作数据库(查询返回某个值)

  1. 查询表里面有多少条记录,返回是某个值。
  2. 使用Jdbctemplate实现查询返回某个值。
    Spring——JdbcTemplate操作数据库
    @Override
    public int selectCount() {
        String sql = "select count(*) from t_book";
        Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
        return count;
    }

五、JdbcTemplate操作数据库(查询返回某对象)
1.场景:查询图书详请
2.JdbcTemplate查询返回对象
Spring——JdbcTemplate操作数据库
有三个参数
第一个是:sql语句
第二个是:RowMapper,是接口,返回不同类型数据,使用这个接口里面实现类完成数据封装
第三个参数:sql语句值

    @Override
    public Book findOne(String id) {
        String sql = "select * from t_book where book_id=?";
        Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
        return book;
    }

六、JdbcTemplate操作数据库(查询返回集合)
1.场景:查询图书列表分页…
2.调用JdbcTemplate方法实现查询返回方法
Spring——JdbcTemplate操作数据库

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

七、JdbcTemplate操作数据库(批量操作)
1.批量操作:操作表里面多条记录
2.JdbcTemplate实现批量添加操作
Spring——JdbcTemplate操作数据库
有两个参数:第一个参数:sql语句。第二个参数:List集合,添加多条记录数据

    @Override
    public void batchAddBook(List<Object[]> batchArgs) {
        String sql = "insert into t_book values(?,?,?)";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        System.out.println(Arrays.toString(ints));
    }

3.JdbcTemplate实现批量修改操作

    @Override
    public void batchUpdateBook(List<Object[]> objects) {
        String sql = "update t_book set book_name=?, book_status=? where book_id=?";
        jdbcTemplate.batchUpdate(sql, objects);
    }

注意:Ojbect[]数组中各项要与sql语句中的占位符“?”一一对应,不要弄错顺序。
4.JdbcTemplate实现批量删除操作

   @Override
    public void batchDeleteBook(List<Object[]> objects) {
        String sql = "delete from t_book where book_id=? and book_name=? and book_status=?";
        jdbcTemplate.batchUpdate(sql, objects);
    }