IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SpringMVC框架学习记录 6 JDBCTemplate -> 正文阅读

[大数据]SpringMVC框架学习记录 6 JDBCTemplate

JDBCTemplate 简介

JDBCTemplate 是 Spring 框架提供的工具类,其对 JDBC 做了高度封装,从而简化原始繁琐的 JDBC 操作


JDBCTemplate 示例

导入相关依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.10</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>5.3.10</version>
</dependency>

创建数据库 user 表和 User 实体类

package Entity;

public class User {
	private String userName;
	private int age;

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "User{" + "userName='" + userName + '\'' + ", age=" + age + '}';
	}
}

创建 JdbcTemplate 对象执行数据库操作

@Test
public void test1() throws PropertyVetoException {
	ComboPooledDataSource dataSource = new ComboPooledDataSource();
	dataSource.setDriverClass("com.mysql.jdbc.Driver");
	dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/xyz?characterEncoding=utf8");
	dataSource.setUser("root");
	dataSource.setPassword("admin");
	JdbcTemplate jdbcTemplate = new JdbcTemplate();
	jdbcTemplate.setDataSource(dataSource);
	jdbcTemplate.update("insert into user values(?,?)", "皮卡丘", 5);
}

需配置一个数据源,通过 JdbcTemplate 的 setDataSource() 方法设置数据源,然后进行相应操作即可


通过 Spring 产生数据源和 JdbcTemplate

创建数据源

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/xyz?characterEncoding=utf8
jdbc.username=root
jdbc.password=admin
<context:property-placeholder location="jdbc.properties"/>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driver}"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <property name="user" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

?将数据库连接信息写在 jdbc.properties 文件中,加载后通过 EL 表达式读取

创建 JdbcTemplate

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
</bean>

创建 JdbcTemplate ,注入 dataSource

从 ApplicationContext 中获取 JdbcTemplate 对象

@Test
public void test2() {
	ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
	JdbcTemplate jdbcTemplate = app.getBean(JdbcTemplate.class);
	jdbcTemplate.update("insert into user values(?,?)", "皮卡丘", 5);
}

JDBCTemplate 常用操作

增删改

对于增删改操作,只需调用 JdbcTemplate 对象的 update() 方法,填入 sql 语句和参数即可

以改操作为例

@Test
public void test3() {
	ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
	JdbcTemplate jdbcTemplate = app.getBean(JdbcTemplate.class);
	jdbcTemplate.update("update user set age=? where userName=?", 10, "皮卡丘");
}

对于多结果的查询操作,需调用?JdbcTemplate 对象的 query() 方法,第一个参数填入 sql 语句,第二个参数传入 BeanPropertyRowMapper 对象,用于将查询结果与实体类一一映射,自动封装

@Test
public void test4() {
	ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
	JdbcTemplate jdbcTemplate = app.getBean(JdbcTemplate.class);
	List<User> users = jdbcTemplate.query("select * from user", new BeanPropertyRowMapper<User>(User.class));
	System.out.println(users);
}

对于单结果的查询操作,需调用?JdbcTemplate 对象的 queryForObject() 方法,同样需填入 sql 语句和相应的?BeanPropertyRowMapper 对象

@Test
public void test5() {
	ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
	JdbcTemplate jdbcTemplate = app.getBean(JdbcTemplate.class);
	User user = jdbcTemplate.queryForObject("select * from user where userName=?", new BeanPropertyRowMapper<User>(User.class), "皮卡丘");
	System.out.println(user);
}

聚合查询

对于聚合查询操作,同样需调用?JdbcTemplate 对象的 queryForObject() 方法,并填入 sql 语句,区别在于需要指定返回类型,如下例中查询记录总数,返回 Integer 类型,则参数填入 Integer.class

@Test
public void test6() {
	ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
	JdbcTemplate jdbcTemplate = app.getBean(JdbcTemplate.class);
	Integer count = jdbcTemplate.queryForObject("select count(*) from user", Integer.class);
	System.out.println(count);
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 13:06:19  更:2021-12-03 13:07:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:29:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码