Jdbc Template
2023-02-18 16:40:53 时间
# Jdbc Template
- Jdbc Template(概念和准备)
- Jdbc Template操作数据库(添加)
- Jdbc Template数据库操作数据库(修改和删除)
- Jdbc Template数据库操作数据库(查询返回某个值)
- Jdbc Template数据库操作数据库(查询返回某个对象)
- Jdbc Template数据库操作数据库(批量操作)
# Jdbc Template(概念和准备)
- 什么是JdbcTemplate
- Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作
- 准备工作
- 创建数据库和表
CREATE DATABASE user_db
CREATE TABLE t_book(
userId BIGINT PRIMARY KEY,
username VARCHAR(100) NOT NULL,
ustatus VARCHAR(50) NOT NULL)
- 引入相关的jar包
- 在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="hsp" />
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
</bean>
- 配置JdbcTemplate对象,注入DataSource
<!--创建jdbcTemplate对象-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入DataSource-->
<property name="dataSource" ref="dataSource"></property>
</bean>
- 创建service类,创建dao,在dao注入jdbcTemplate对象
第一部分
<!--开启组件扫描-->
<context:component-scan base-package="com.frx01"></context:component-scan>
第二部分
- Service
@Service
public class BookService {
//注入dao
@Autowired
private BookDao bookDao;
}
- Dao
@Repository
public class BookDaoImpl implements BookDao{
//注入JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
}
# Jdbc Template操作数据库(添加)
对应数据库创建实体类
public class User {
private String userId;
private String username;
private String ustatus;
public String getUserId() {
return userId;
}
public String getUsername() {
return username;
}
public String getUstatus() {
return 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方法实现添加操作
update(String sql,Object... args)
有两个参数
第一个参数: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.调用方法实现
Object[] args={ book.getUserId(), book.getUsername(), book.getUstatus()};
int update = jdbcTemplate.update(sql,args);
System.out.println(update);
}
}
测试
public class TestBook {
@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("java");
book.setUstatus("A");
bookService.addBook(book);
}
# Jdbc Template数据库操作数据库(修改和删除)
在BookDaoImpl编写修改和删除操作
//修改
@Override
public void update(Book book) {
String sql="update t_book set username=?,ustate=? where userId=?";
Object[] args={ book.getUsername(), book.getUstatus(), book.getUserId()};
int update = jdbcTemplate.update(sql,args);
System.out.println(update>0?"修改成功":"修改失败");
}
//删除
@Override
public void delete(String id) {
String sql="delete from t_book where userId=?)";
int update = jdbcTemplate.update(sql, id);
System.out.println(update>0?"删除成功":"删除失败");
}
测试类测试
//修改
// Book book = new Book();
// book.setUserId("1");
// book.setUsername("javaup");
// book.setUstatus("AAA");
// bookService.updateBook(book);
//删除
Book book = new Book();
book.setUserId("1");
bookService.deleteBook("1");
- 删除结果
# Jdbc Template数据库操作数据库(查询返回某个值)
查询表里面有多少条记录,返回是某个值
使用JdbcTemplate对面里面queryForOcject方法实现查询操作
queryForObject(String sql,Class<T> requiredType)
有两个参数
- 第一个参数:sql语句
- 第二个参数:返回类型Class
//查询表记录数
@Override
public int selectCount(){
String sql="select count(*) from t_book";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
}
测试
# Jdbc Template数据库操作数据库(查询返回某个对象)
场景:查询图书详情
JdbcTemplate实现查询返回对象
queryForObject(String sql,RowMapper<T> rowMapper,Object... args)
有三个参数
- 第一个参数: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;
}
测试
场景:查询图书列表分页
调用JdbcTemplate方法实现查询返回集合
query(String sql,RowMapper<T> rowMapper,Object... args)
有三个参数
- 第一个参数: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;
}
测试
# Jdbc Template数据库操作数据库(批量操作)
批量操作:操作表里面多条记录
JdbcTemplate实现批量添加操作
batchUpdate(String sql,List<Object[]> batchArgs)
有两个参数
- 第一个参数: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));
}
测试
//批量添加
List<Object[]> batchArgs=new ArrayList<>();
Object[] o1={"3","java","a"};
Object[] o2={"4","c++","b"};
Object[] o3={"5","MySQL","e"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
//调用批量添加
bookService.batchAdd(batchArgs);
JdbcTemplate实现批量修改操作
//批量修改
@Override
public void batchUpdateBook(List<Object[]> batchArgs) {
String sql="update t_book set username=?,ustatus=? where userId=?";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
测试
//批量修改
List<Object[]> batchArgs=new ArrayList<>();
Object[] obj1={"java111","a3","3"};
Object[] obj2={"c++1010","b4","4"};
Object[] obj3={"MySQL11","c5","5"};
batchArgs.add(obj1);
batchArgs.add(obj2);
batchArgs.add(obj3);
//调用方法
bookService.batchUpdate(batchArgs);
}
JdbcTemplate实现批量删除操作
//批量删除
@Override
public void batchDeleteBook(List<Object[]> batchArgs) {
String sql="delete from t_book where userId=?";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
测试
//批量修改
List<Object[]> batchArgs=new ArrayList<>();
Object[] obj1={"3"};
Object[] obj2={"4"};
batchArgs.add(obj1);
batchArgs.add(obj2);
//调用方法实现批量删除
bookService.batchDelete(batchArgs);
相关文章
- 不背锅运维:搭不起来我赔钱给你:分享Ubuntu20和Centos7中使用kubeadm搭建k8s集群。
- 【Tools】端口扫描工具RustScan
- Teleport:开源简单易用的堡垒机(详细教程,值得收藏)
- 数据挖掘可视化系统
- 多模型电影短评情感分析
- 基于ElasticSearch通用小规模搜索引擎
- 【Tools】漏洞扫描工具 DongTai
- UCI 信用卡数据集的二元分类分析
- 【Tools】被动扫描工具 EPScan
- 基于Flask的学生管理系统
- 智能盘点—钢筋数量AI识别
- boss直聘网数据分析项目
- 淘宝app的用户消费行为数据分析
- yolov5 + deepsort实现了行人计数
- 轻量级内网资产探测漏洞扫描工具
- 关于项目如何获取
- 一文搞懂Electron的四种视图容器和它们之间的IPC通信机制
- 饭店流量指标预测
- 300 万条《野蛮时代》的玩家数据分析
- 130 万条深圳通刷卡数据分析