写点什么

Spring 5(四)JdbcTemplate

作者:浅辄
  • 2022-11-14
    吉林
  • 本文字数:3461 字

    阅读完需:约 11 分钟

Spring 5(四)JdbcTemplate

四.JdbcTemplate

1.基本概念

  • 什么是 JdbcTemplate?

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

  • 准备工作

  • 引入相关 jar 包


  • 在 spring 配置文件配置数据库连接池


    <!-- 数据库连接池-->    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"          destroy-method="close">        <property name="url" value="jdbc:mysql:///db02?serverTimezone=UTC"/>        <property name="username" value="root"/>        <property name="password" value="123456"/>        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>    </bean>
复制代码


  • 配置 JdbcTemplate 对象,注入 DataSource


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


  • 创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象

  • 配置文件


      <!--组件扫描-->      <context:component-scan base-package="com.gbx"/>
复制代码


- Service
复制代码


      @Service      public class BookService {                //注入dao          @Autowired          private BooKDao booKDao;      }
复制代码


- Dao
复制代码


      @Repository      public class BookImpl implements BooKDao{                //注入JdbcTemplate          @Autowired          private JdbcTemplate jdbcTemplate;      }
复制代码

2.操作数据库

2.1 添加
  • 对应数据库创建实体类


  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;      }  }
复制代码


  • 编写 service 和 dao

  • 在 dao 进行数据库添加操作

  • 调用 JdbcTemplate 对象里面 update 方法实现添加操作


  • 有两个参数

  • 第一个参数:sql 语句

  • 第二个参数:可变参数,设置 sql 语句值


    @Repository    public class BookImpl implements BooKDao{            //注入JdbcTemplate        @Autowired        private JdbcTemplate jdbcTemplate;            //添加的方法        @Override        public void add(Book book) {            //1 创建sql语句            String sql = "insert into t_book values (?,?,?)";            //2 调用方法实现            Object[] args = {book.getUserId(),book.getUsername(),book.getUstatus()};            int update = jdbcTemplate.update(sql,args);            System.out.println(update);        }    }
复制代码


  • 测试类


  @Test      public void testJdbcTemplate(){          ApplicationContext context =                  new ClassPathXmlApplicationContext("bean1.xml");          BookService bookService = context.getBean("bookService", BookService.class);          Book book = new Book();          book.setUserId("1");          book.setUsername("三国");          book.setUstatus("售罄");          bookService.addBook(book);      }
复制代码


2.2 修改和删除

Service 层


//修改的方法public void update(Book book){    booKDao.updateBook(book);}
//删除的方法public void delete(String id){ booKDao.deleteBook(id);}
复制代码


Dao 层


    void updateBook(Book book);
void deleteBook(String id);
复制代码


实现类


//修改@Overridepublic void updateBook(Book book) {    //1 创建sql语句    String sql = "update t_book set username=?,ustatus=?,where user_id=?";    //2 调用方法实现    Object[] args = {book.getUsername(),book.getUstatus(),book.getUserId()};    int update = jdbcTemplate.update(sql,args);    System.out.println(update);}
//删除@Overridepublic void deleteBook(String id) { //1 创建sql语句 String sql = "delete from t_book where user_id=?"; //2 调用方法实现 int update = jdbcTemplate.update(sql,id); System.out.println(update);}
复制代码


Test 类


//修改Book book = new Book();book.setUserId("1");book.setUsername("三国演义");book.setUstatus("在售");bookService.update(book);
//删除bookService.delete("1");
复制代码
2.3 查询

2.3.1 查询返回某个值

  • 查询表里面有多少条记录,返回是某个值

  • 使用 JdbcTemplate 实现查询返回某个值代码


  • 有两个参数

  • 第一个参数:sql 语句

  • 第二个参数:返回类型 Class


      //查询表记录      @Override      public int selectCount() {          String sql =  "select count(*) from t_book";          Integer count = jdbcTemplate.queryForObject(sql, Integer.class);          return count;      }
复制代码


2.3.2 查询返回对象


  • 场景:查询图书详情

  • JdbcTemplate 实现


  • 有三个参数

  • 第一个参数:sql 语句

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

  • 第三个参数:sql 语句值


  //查询返回对象  @Override  public Book findBookInfo(String id) {      String sql = "select * from t_book where userid=?";      Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);      return book;  }
复制代码


2.3.3 查询返回集合


  • 场景:查询图书列表分页...

  • 调用 JdbcTemplate 方法实现查询返回集合


  • 有三个参数

  • 第一个参数:sql 语句

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

  • 第三个参数:sql 语句值


    //查询返回集合    @Override    public List<Book> findAllBook() {        String sql = "select * from t_book";        List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));        return bookList;    }
复制代码
2.4 批量操作

2.4.1 批量添加

  • 批量操作:操作表里面多条记录

  • ]dbcTemplate 实现批量添加操作


  • 有两个参数

  • 第一个参数: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));  }        Test类      //批量添加          List<Object[]> batchArgs=new ArrayList<>();          Object[]o1 = {"3","java","a"};          Object[]o2 = {"2","py","b"};          Object[]o3 = {"4","C++","c"};          batchArgs.add(o1);          batchArgs.add(o2);          batchArgs.add(o3);          //调用批量参加          bookService.batchAdd(batchArgs);
复制代码


2.4.2 批量修改


@Overridepublic void batchUpdateBook(List<Object[]> batchArgs) {    String sql = "update t_book set username=?,ustatus=?where user_id=?";    int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);    System.out.println(ints);}
//批量修改 List<Object[]> batchArgs=new ArrayList<>(); Object[]o1 = {"java","在售","4"}; Object[]o2 = {"py","售罄","9"}; Object[]o3 = {"C++","在售","6"}; batchArgs.add(o1); batchArgs.add(o2); batchArgs.add(o3); bookService.batchUpdate(batchArgs);
复制代码


2.4.3 批量删除


@Overridepublic void batchDeleteBook(List<Object[]> batchArgs) {    String sql = "delete from t_book where user_id=?";    int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);    System.out.println(Arrays.toString(ints));}
//批量修改 List<Object[]> batchArgs=new ArrayList<>(); Object[]o1 = {"4"}; Object[]o2 = {"9"}; Object[]o3 = {"6"}; batchArgs.add(o1); batchArgs.add(o2); batchArgs.add(o3); bookService.batchDelete(batchArgs);
复制代码


发布于: 2022-11-14阅读数: 69
用户头像

浅辄

关注

大丈夫生于天地之间,岂能郁郁久居人之下 2022-11-08 加入

阿里云专家博主认证

评论

发布
暂无评论
Spring 5(四)JdbcTemplate_Java_浅辄_InfoQ写作社区