jdbctemplate的学习,以及基本操作

jdbctemplate

Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
jdbc是sun公司为各个数据库厂商提供数据库与java脚本连接的接口,其中的数据库和java的实现由数据库厂商来实现,我们直接使用就好。

在我们使用jdbc的时候,仍然有许多的麻烦的地方,例如必须自己来管理数据库资源如:获取PreparedStatement,设置SQL语句参数忘记关闭连接等,所以spring框架为我们封装了jdbc——jdbctemplate。
​ JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用。JdbcTemplate是Spring的一部分。JdbcTemplate处理了资源的建立和释放。他帮助我们避免一些常见的错误,比如忘了总要关闭连接。他运行核心的JDBC工作流,如Statement的建立和执行,而我们只需要提供SQL语句和提取结果。

在这里插入图片描述

1 准备工作

1.1导入包

首先我们需要准备orm包(非必要,主要功能是连接其他的拓展包如mybatis等)、mysql-connection(连接数据库的包)、druid(数据库连接池)、spring-jdbc(spring帮助整合的jdbc包)、spring-tx(处理事务的包)的jar包

1.2配置文件

配置连接池,通过druid和mysql-connection来创建连接数据库的容器并注入信息

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <property name="password" value="wjzkx123"></property>
        <property name="username" value="root"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/work"></property>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    </bean>

1.3配置JdbcTemplate对象

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

1.4创建用户类和配置文件

创建BookDao接口

package com.example.spring5_demo4.dao;

import org.springframework.stereotype.Repository;

import javax.annotation.Resource;

@Resource
public interface BookDao {
}

创建BookDaoImpl类实现BookDao接口

package com.example.spring5_demo4.dao;

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
    public JdbcTemplate jdbcTemplate;
}

创建BookService

package com.example.spring5_demo4.service;

import com.example.spring5_demo4.dao.BookDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

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

}

1.7对xml配置进行注解扫描

 <context:component-scan base-package="com.example"></context:component-scan>

1.8创建数据库表

DROP TABLE IF EXISTS `t_book`;
CREATE TABLE `t_book`  (
  `book_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `bookname` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `bstatus` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`book_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 123458 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

2.通过jdbc对数据进行操作

2.1增加

2.1.1单个增加

在BookDao中添加add()方法

    public void add(Book book);

在BookDaoImpl中添加add()方法的实现类

     @Override
    public void add(Book book) {
        String sql =  "insert into t_book values(?,?,?)";
        Object[] args = {book.getBookId(),book.getBookname(),book.getBstatus()};
        int update =  jdbcTemplate.update(sql,args);
        System.out.println("插入成功");
        System.out.println(update);
    }

创建jdbcTemplate来调用spring给我们封装好的update函数

BookService中创建调用BookDao的方法


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

创建test类,并写入操作来测试是否成功

    @Test
    public void testJdbc(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService",BookService.class);

        Book book = new Book();
        book.setBookId("123456");
        book.setBookname("java");
        book.setBstatus("a");

        bookService.addBook(book);
    }

在这里插入图片描述
在这里插入图片描述

2.1.2批量添加

在BookDao中创建batchAddBook方法

    void batchAddBook(List<Object[]> batchArgs);

在BookService中创建batchadd

    public void batchadd(List <Object[]> batchArgs){
        return bookDao.batchAddBook(batchArgs);
    }

在BookDaoImpl中创建实现方法

    @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));
    }

在测试类中写测试代码

    @Test
    public void testJdbc7(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService",BookService.class);

        List<Object[]> batchArags = new ArrayList<>();
        Object[] o1 = {"114514","野兽","123"};
        Object[] o2 = {"1919810","恶臭","asfd"};
        Object[] o3 = {"22222","奥里给","afff"};

        batchArags.add(o1);
        batchArags.add(o2);
        batchArags.add(o3);

        bookService.batchadd(batchArags);
    }

在这里插入图片描述

2.2删除

2.2.1单个删除

在BookDao中添加delete方法

    public void delete(String id);

在BookDaoImpl中添加delete()方法的实现类

     @Override
    public void delete(String id) {
        String sql = "delete from t_book where book_id = ?";
        Object[] args = {id};
        int update = jdbcTemplate.update(sql,args);
        System.out.println("删除成功");
        System.out.println(update);
    }

创建jdbcTemplate来调用spring给我们封装好的update函数

在BookService中添加方法

    public void deleteBook(String id){
        bookDao.deleteBook(id);
    }

在test类里面添加方法

    @Test
    public void testJdbc(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService",BookService.class);

        String id = "4";

        bookService.deleteBook(id);
    }
2.2.2删除多个

在BookDao中创建删除多个的方法

    void batchdeletebook(List<Object[]> batchArgs);

在BookService中添加

    public void batchdeleteBook(List<Object[]> batchArgs){
        bookDao.batchdeletebook(batchArgs);
    }

在BookDaoImpl中添加实现类

    @Override
    public void batchdeletebook(List<Object[]> batchArgs) {
        String sql = "delete from t_book where book_id = ?";
        int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
        System.out.println(ints);
    }

创建测试类

    @Test
    public void testJdbc9(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService",BookService.class);

        List<Object[]> batchArags = new ArrayList<>();
        Object[] o1 = {"114514"};
        Object[] o2 = {"1919810"};
        Object[] o3 = {"22222"};

        batchArags.add(o1);
        batchArags.add(o2);
        batchArags.add(o3);

        bookService.batchdeleteBook(batchArags);
    }

在这里插入图片描述

2.3查找

2.3.1查找数据库数据量

在BookDao中创建方法

   public int selectCount();

在BookService中创建findCount方法

   public int findCount(){
        return bookDao.selectCount();
    }

在BookDaoImpl中创建select的实现类

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

        return count;
    }

创建测试类

    @Test
    public void testJdbc4(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService",BookService.class);

        int i = bookService.findCount();
        System.out.println(i);
    }

在这里插入图片描述

2.3.2查找单个数据

在BookDao中创建方法

       public Book findBookInfo(String id);

在BookService中创建findCount方法

    public Book findBookInfo(String id){
        return bookDao.findBookInfo(id);
    }

在BookDaoImpl中创建select的实现类

    @Override
    public Book findBookInfo(String id) {
        String sql = "select * from t_book where book_id=?";
        Book book = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Book>(Book.class),id);//rowmapper帮我们封装,是个接口,返回不同数据类型,使用这个接口里面实现类完成数据封装装
        return book;
    }

创建测试类

    @Test
    public void testJdbc5(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService",BookService.class);

        Book book = bookService.findBookInfo("1234");
        System.out.println(book.toString());
    }

在这里插入图片描述

2.3.3查找所有数据(List)

在BookDao中创建方法

          public List<Book> findALLbook();

在BookService中创建findCount方法

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

在BookDaoImpl中创建select的实现类

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

创建测试类

    @Test
    public void testJdbc6(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService",BookService.class);

        List<Book> all = bookService.findAll();
        System.out.println(all);
    }

在这里插入图片描述

2.4修改

2.4.1 单个修改

在BookDao中添加delete方法

    public void update(String id);

在BookDaoImpl中添加delete()方法的实现类

     @Override
    public void update(String id) {
        String sql = "update t_book set bookname=?,bstatus=? where book_id=?";
        Object[] args = {book.getBookname(),book.getBstatus(),book.getBookId()};
        int update = jdbcTemplate.update(sql,args);
        System.out.println(update);
    }

创建jdbcTemplate来调用spring给我们封装好的update函数

在BookService中添加方法

    public void updateBook(String id){
        bookDao.update(id);
    }

在test类里面添加方法

    @Test
    public void testJdbc(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService",BookService.class);

        Book book = new Book();
        book.setBookId("123456");
        book.setBookname("javaee");
        book.setBstatus("abcdef");

        bookService.updateBook(book);
    }
2.4.2批量修改

在BookDao中添加方法

  void batchUpdatebook(List<Object[]> batchArgs); 	

在BookService中添加方法

    public void batchUpdateBook(List<Object[]> batchArgs){
        bookDao.batchUpdatebook(batchArgs);
    }

在BookDaoImpl中添加实现方法

    @Override
    public void batchUpdatebook(List<Object[]> batchArgs) {
        String sql = "update t_book set bookname=?,bstatus=? where book_id=?";
        int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
        System.out.println(ints);
    }

测试类中添加

    @Test
    public void testJdbc8(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService",BookService.class);

        List<Object[]> batchArags = new ArrayList<>();
        Object[] o1 = {"野","123d","114514"};
        Object[] o2 = {"恶","assfd","1919810"};
        Object[] o3 = {"奥里","afsff","22222"};

        batchArags.add(o1);
        batchArags.add(o2);
        batchArags.add(o3);

        bookService.batchUpdateBook(batchArags);
    }

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂派爱丽丝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值