Java 之 JDBCTemplate
Spring JDBC
Spring 框架是对 JDBC 的简单封装,提供了一个 JDBCTemplate 对象简化 JDBC 的开发。
步骤:
1、导入 jar 包
2、创建 JDBCTemplate 对象,依赖于数据源 DataSource。
JdbcTemplate template = new JdbcTemplate(ds);
3、调用 JdbcTemplate 的方法来完成 CRUD 操作
常用方法:
1、update():执行DML语句。增、删、改语句。
2、queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合,(注意:这个方法查询的结果集长度只能是1)
3、queryForList():查询结果将结果集封装为list集合(注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中)
4、query():查询结果,将结果封装成 JavaBean 对象,
query的参数:RowMapper
① 创建一个匿名内部类 RowMapper,重写里面的方法
② 一般使用 BeanPropertyRowMapper 实现类,可以完成数据到 JavaBean 的自动封装
new BeanPropertyRowMapper<类型>(类型.class)
5、queryForObject():查询结果,将结果封装成对象,一般用于聚合函数的查询
案例:
在bookstores 数据库中有一个book表,表结构和记录如下:
需求:
(1)修改1号数据的 num 为10;
(2)添加一条记录;
(3)删除刚刚添加的记录;
(4)查询 id 为1的记录,将其封装为 Map 集合;
(5)查询所有记录,将其封装为 List;
(6)查询所有记录,将其封装为 Emp对象的 List 集合;
(7)查询总记录数。
代码实现:
import cn.ks.beans.Book;
import cn.ks.utils.JDBCUtils;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map; public class JdbcTemplateDemo { //1获取JDBCTemplate 对象
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); /*
* 1、修改1号数据的 num 为10;
*/
@Test
public void test1() { // 2 定义SQL
String sql = "update book set num=10 where id=1";
// 3 执行SQL
int count = template.update(sql); System.out.println(count); } /*
* 2 添加一条记录;
*/
@Test
public void test2() {
String sql = "insert into book values(?,?,?,?,?)";
int count = template.update(sql, null, "红楼梦", 3, 33.0, 6);
System.out.println(count);
} /*
* 3、删除刚刚添加的记录;
*/
@Test
public void test3() {
String sql = "delete from book where id=?";
int count = template.update(sql, 3);
System.out.println(count);
} /*
* 4、查询 id 为1的记录,将其封装为 Map 集合;
* 注意,这个方法查询的结果长度只能是1
*/
@Test
public void test4() {
// String sql = "select * from book where id=? or id=?";
// Map<String, Object> map = template.queryForMap(sql, 1, 2);
String sql = "select * from book where id=?";
Map<String, Object> map = template.queryForMap(sql, 1);
System.out.println(map);
//{id=1, name=西游记, kind=1, price=22.0, num=5}
} /*
5、查询所有记录,将其封装为 List;
*/
@Test
public void test5() {
String sql = "select * from book";
List<Map<String, Object>> list = template.queryForList(sql); for (Map<String,Object> item : list) {
System.out.println(item);
}
} /*
6、查询所有记录,将其封装为 Emp对象的 List 集合;
*/
@Test
public void test6() {
String sql = "select * from book";
List<Book> list = template.query(sql, new RowMapper<Book>() { //匿名内部类
@Override
public Book mapRow(ResultSet resultSet, int i) throws SQLException {
Book book = new Book();
book.setId(resultSet.getInt("id"));
book.setName(resultSet.getString("name"));
book.setKind(resultSet.getString("kind"));
book.setPrice(resultSet.getDouble("price"));
book.setNum(resultSet.getInt("num")); return book;
}
}); for (Book book : list) {
System.out.println(book);
}
} /*
6、查询所有记录,将其封装为 Emp对象的 List 集合;
*/
@Test
public void test7() {
String sql = "select * from book";
List<Book> list = template.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
for (Book book : list) {
System.out.println(book);
}
} /*
* 7、查询总记录数。
*/
@Test
public void test8() {
String sql = "select count(id) from book";
Long aLong = template.queryForObject(sql, Long.class);
System.out.println(aLong);
}
}
Java 之 JDBCTemplate的更多相关文章
- JAVA Spring JdbcTemplate ( 以 SQLSERVER 为例 ) 的简单使用
< 1 > 配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q ...
- JdbcTemplate学习笔记
JdbcTemplate学习笔记 1.使用JdbcTemplate的execute()方法执行SQL语句 Java 代码 jdbcTemplate.execute("CREATE TABLE ...
- jdbcTemplate获取mysql的blob
java使用jdbcTemplate操作mysql数据库,遇到blob字段,正常读取出来是blob的地址,而不是blob的内容. 下面采用2中方式读取blob的内容: 1.以二进制数组形式读取blob ...
- spring---transaction(5)---事务的体系
1.写在前面 事务的模型为3中: 本地事务模式. 编程事务模式. 声明事务模式. 例子1:本地事务模式 Connection conn=jdbcDao.getConnection(); Prepare ...
- SpringMVC -jquery实现分页
效果图: 关键类的代码: package:utils: SpringUtil.java 通过jdbcTemplate连接oracle数据库 package com.utils; import org. ...
- 数据库表数据传输到Oracle方案
方案步骤为:数据导出到文件(增量或全量),通知接口文件就绪(上传到ftp或提供下载url),接收方下载文件,解析文件并入库.Oracle需要建立对应的临时表和正式表,入库步骤为:清空临时表,批量插入数 ...
- 走进JavaWeb技术世界3:JDBC的进化与连接池技术
走进JavaWeb技术世界3:JDBC的进化与连接池技术 转载公众号[码农翻身] 网络访问 随着 Oracle, Sybase, SQL Server ,DB2, Mysql 等人陆陆续续住进数据库 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】
一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...
随机推荐
- XmlIgnore的解释和使用
XmlIgnore是一个自定义属性,用来指明在序列化时是否序列化一个属性.如下面的例子: public class Group { public string GroupName; [XmlIgnor ...
- 【spring源码分析】IOC容器解析
参考: https://www.iteye.com/topic/1121913(自动注入bean的扫描器) https://m.imooc.com/mip/article/34150(循环依赖的解决方 ...
- 007 SpringBoot的@EnableAutoConfiguration注解
一:原理 1. 首先Spring Boot项目中都会如下启动类: @SpringBootApplication public class Application { public static voi ...
- JQuery selector form input
var inputPhoneInFormActivity = $("form#formtab input[name='phone']"); if(inputPhoneInFormA ...
- Tomcat Response encode
Character Encoding - Apache Tomcat - Apache Software Foundation https://cwiki.apache.org/confluence/ ...
- SQLite添加新的字段
通过alter添加新的字段SQL语句 "ALTER TABLE 'DiHKChatMessage' ADD 'phoneNum' varchar"; 但是如果这个字段已经存在的话, ...
- 013-centos7 常用命令--查看当前用户的4种方法
一.概述 4种查看系统用户信息(通过编号(ID))的方法. 1.1. 使用w命令查看登录用户正在使用的进程信息 w命令用于显示已经登录系统的用户的名称,以及他们正在做的事.该命令所使用的信息来源于/v ...
- python 传入任意多个参数(方法调用可传参或不传参)
1.可传参数与不传参数,在定义中给参数设置默认值 class HandleYmal: """ 获取测试环境的配置 """ def __ini ...
- idea tomcat部署项目路径
在idea中配置的tomcat,在运行时idea不会把项目放到该路径下,而是复制一份足够的配置文件,到 ${user.home}/.IntelliJIdea/system/tomcat 目录下: C: ...
- Office Online Server2016搭建与部署(在线编辑)
至少需要两台服务器,一台域控制器,一台部署Office Online Server https://docs.microsoft.com/zh-cn/officeonlineserver/office ...