栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jdbctemplate的学习,以及基本操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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来创建连接数据库的容器并注入信息

    
        
        
        
        
    
1.3配置JdbcTemplate对象
    
        
    
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配置进行注解扫描
 
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 batchArgs);

在BookService中创建batchadd

    public void batchadd(List  batchArgs){
        return bookDao.batchAddBook(batchArgs);
    }

在BookDaoImpl中创建实现方法

    @Override
    public void batchAddBook(List 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 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 batchArgs);

在BookService中添加

    public void batchdeleteBook(List batchArgs){
        bookDao.batchdeletebook(batchArgs);
    }

在BookDaoImpl中添加实现类

    @Override
    public void batchdeletebook(List 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 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.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 findALLbook();

在BookService中创建findCount方法

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

在BookDaoImpl中创建select的实现类

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

创建测试类

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

        List 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 batchArgs); 	

在BookService中添加方法

    public void batchUpdateBook(List batchArgs){
        bookDao.batchUpdatebook(batchArgs);
    }

在BookDaoImpl中添加实现方法

    @Override
    public void batchUpdatebook(List 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 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);
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/720003.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号