Spring5 框架 ---- JdbcTemplate

1. JdbcTemplate概念和准备1. 什么是JdbcTemplate2. 准备工作

2. JdbcTemplate操作数据库(添加)1. 对应数据库表创建实体类2. 编写 service 和 dao3. 测试类

3. JdbcTemplate操作数据库(修改和删除)1. 修改2. 删除

4. JdbcTemplate操作数据库(查询返回某个值)1. 查询表里面有多少条记录,返回某个值2. 使用JdbcTemplate实现查询返回某个值代码

5. JdbcTemplate操作数据库(查询返回对象)1. 场景:查询图书详情2. JdbcTemplate实现查询返回对象

6. JdbcTemplate操作数据库(查询返回集合)1. 场景:查询图书列表分页...2. JdbcTemplate方法实现查询返回集合

7. JdbcTemplate操作数据库(批量操作)1. 批量操纵:操作表里面多条记录2. JdbcTemplate实现批量添加操作3. JdbcTemplate实现批量修改操作4. JdbcTemplate实现批量删除操作

1. JdbcTemplate概念和准备

1. 什么是JdbcTemplate

Spring 矿建对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作

2. 准备工作

引入相关 jar 包

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

destroy-method="close">

配置 JdbcTemplate 对象,注入 DataSource

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

配置文件

Service

package com.fickler.spring5.service;

import com.fickler.spring5.dao.BookDao;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

/**

* @author dell

* @version 1.0

*/

@Service

public class BookService {

//注入dao

@Autowired

private BookDao bookDao;

}

Dao

package com.fickler.spring5.dao;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.stereotype.Repository;

/**

* @author dell

* @version 1.0

*/

@Repository

public class BookDaoImpl implements BookDao{

//注入JdbcTemplate

@Autowired

private JdbcTemplate jdbcTemplate;

}

2. JdbcTemplate操作数据库(添加)

1. 对应数据库表创建实体类

package com.fickler.spring5.entity;

/**

* @author dell

* @version 1.0

*/

public class User {

private String userId;

private String username;

private String ustatus;

public String getUserId() {

return userId;

}

public void setUserId(String userId) {

this.userId = userId;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getUstatus() {

return ustatus;

}

public void setUstatus(String ustatus) {

this.ustatus = ustatus;

}

}

2. 编写 service 和 dao

在 dao 进行数据添加操作

@Override

public void add(Book book) {

//创建sql语句

String sql = "insert into t_book values (?, ?, ?)";

//调用方法实现

Object[] args = {book.getUserId(), book.getUsername(), book.getUstatus()};

int update = jdbcTemplate.update(sql, args);

System.out.println(update);

}

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

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

3. 测试类

@Test

public void testJdbcTemplateAdd(){

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean1.xml");

BookService bookService = applicationContext.getBean("bookService", BookService.class);

Book book = new Book();

book.setUserId("1");

book.setUsername("java");

book.setUstatus("a");

bookService.addBook(book);

}

3. JdbcTemplate操作数据库(修改和删除)

1. 修改

@Override

public void updateBook(Book book) {

String sql = "update t_book set username = ?, ustatus = ? where user_id = ?";

//args的顺序要sql语句中?的顺序对应起来

Object[] args = {book.getUsername(), book.getUstatus(), book.getUserId()};

int update = jdbcTemplate.update(sql, args);

System.out.println(update);

}

2. 删除

@Override

public void delete(String id) {

String sql = "delete from t_book where user_id = ?";

int update = jdbcTemplate.update(sql, id);

System.out.println(update);

}

4. JdbcTemplate操作数据库(查询返回某个值)

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

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

第一个参数:sql 语句 第二个参数:返回类型 Class

@Override

public int selectCount() {

String sql = "select count(*) from t_book";

Integer count = jdbcTemplate.queryForObject(sql, Integer.class);

return count;

}

测试

@Test

public void testJdbcTemplateSelectCount(){

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean1.xml");

BookService bookService = applicationContext.getBean("bookService", BookService.class);

int count = bookService.findCount();

System.out.println(count);

}

5. JdbcTemplate操作数据库(查询返回对象)

1. 场景:查询图书详情

2. JdbcTemplate实现查询返回对象

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

@Override

public Book findBookInfo(String id) {

String sql = "select * from t_book where user_id = ?";

Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper(Book.class), id);

return book;

}

6. JdbcTemplate操作数据库(查询返回集合)

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

2. JdbcTemplate方法实现查询返回集合

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

@Override

public List findAllBook() {

String sql = "select * from t_book";

List bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper(Book.class));

return bookList;

}

总结 query:增、删、改 queryForObject:返回数量、返回对象 query:返回集合

7. JdbcTemplate操作数据库(批量操作)

1. 批量操纵:操作表里面多条记录

2. JdbcTemplate实现批量添加操作

@Override

public void batchAllBook(List batchArgs) {

String sql = "insert into t_book values(?, ?, ?)";

int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);

System.out.println(ints);

}

测试

@Test

public void testJdbcTemplateBatchAdd(){

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean1.xml");

BookService bookService = applicationContext.getBean("bookService", BookService.class);

List batchArgs = new ArrayList<>();

Object[] o1 = {"4", "ddd", "d"};

Object[] o2 = {"5", "eee", "e"};

Object[] o3 = {"6", "fff", "f"};

batchArgs.add(o1);

batchArgs.add(o2);

batchArgs.add(o3);

bookService.batchAdd(batchArgs);

}

3. JdbcTemplate实现批量修改操作

@Override

public void batchUpdateBook(List batchArgs) {

String sql = "update t_book set username = ?, ustatus = ? where user_id = ?";

int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);

System.out.println(Arrays.toString(ints));

}

测试

@Test

public void testJdbcTemplateBatchUpdate(){

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean1.xml");

BookService bookService = applicationContext.getBean("bookService", BookService.class);

List batchArgs = new ArrayList<>();

Object[] o1 = {"ddd000", "d", "4"};

Object[] o2 = {"eee000", "e", "5"};

Object[] o3 = {"fff000", "f", "6"};

batchArgs.add(o1);

batchArgs.add(o2);

batchArgs.add(o3);

bookService.batchUpdate(batchArgs);

}

4. JdbcTemplate实现批量删除操作

@Override

public void batchDeleteBook(List batchArgs) {

String sql = "delete from t_book where user_id = ?";

int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);

System.out.println(ints);

}

测试

@Test

public void testJdbcTemplateBatchDelete(){

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean1.xml");

BookService bookService = applicationContext.getBean("bookService", BookService.class);

List batchArgs = new ArrayList<>();

Object[] o1 = {"4"};

Object[] o2 = {"5"};

Object[] o3 = {"6"};

batchArgs.add(o1);

batchArgs.add(o2);

batchArgs.add(o3);

bookService.batchDelete(batchArgs);

}

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。