Day36——JdbcTemplate的update方法、batchUpdate方法、queryForObject方法、query方法

一. 知识储备

前面Day35——搭建JdbcTemplate环境搭建好JdbcTemplate的环境后,今天开始讲述它们的对数据库操作的方法。

1.1 update方法

/**
	 * update方法:完成增删改
	 */
	@Test
	public void test() {
		String sql = "insert into bs_user(username, password, email) values ( ?, ?, ?)";
		jt.update(sql, "老王", "123", "123@qq.com");
		
	}

1.2 batchUpdate方法

/**
	 * batchUpdate:批量增删改
	 */
	@Test
	public void testBatchUpdate() {
		String sql = "insert into bs_user(username, password, email) values ( ?, ?, ?)";
		
		ArrayList<Object[]> batchArgs = new ArrayList<>();
		
		batchArgs.add(new Object[] {"aa", "123", "1234@qq.com"});
		batchArgs.add(new Object[] {"bb", "123", "1223@qq.com"});
		batchArgs.add(new Object[] {"cc", "123", "1213@qq.com"});
		
		jt.batchUpdate(sql, batchArgs);
	}

1.3 查询一条数据返回一个对象

/**
	 * queryForObject():查询一条数据返回一个对象
	 */
	@Test
	public void testQueryForObjectReturnSingleObject() {
		String sql = "select id, username, password, email from bs_user where id = ?";
		
		RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
		
		
		User user = jt.queryForObject(sql, rowMapper, 1);
		System.out.println(user);
	}

1.4 查询单个值

/**
	 * 查询单个值
	 */
	@Test
	public void testQueryForObjectReturnSingleValue() {
		String sql = "select count(id) from bs_user";
        Integer result = jt.queryForObject(sql, Integer.class);		
        System.out.println(result);
	}

1.5 查询多行

/**
	 * 查询多行
	 */
	@Test
	public void testQuery() {
		String sql = "select id, username, password, email from bs_user";
		RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
		
		List<User> user = jt.query(sql, rowMapper);
		System.out.println(user);
	}
	

二. 例子

TestJdbcTemplate.java

package com.atguigu.spring.jdbc.beans;

import java.util.ArrayList;
import java.util.List;

import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

class TestJdbcTemplate {
     
	ApplicationContext ctx = 
			new ClassPathXmlApplicationContext("spring-jdbc.xml");
	JdbcTemplate jt = ctx.getBean("jdbcTemplate", JdbcTemplate.class);
	
	/**
	 * 查询多行
	 */
	@Test
	public void testQuery() {
		String sql = "select id, username, password, email from bs_user";
		RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
		
		List<User> user = jt.query(sql, rowMapper);
		System.out.println(user);
	}
	
	
	/**
	 * 查询单个值
	 */
	@Test
	public void testQueryForObjectReturnSingleValue() {
		String sql = "select count(id) from bs_user";
        Integer result = jt.queryForObject(sql, Integer.class);		
        System.out.println(result);
	}
	
	/**
	 * queryForObject():查询一条数据返回一个对象
	 */
	@Test
	public void testQueryForObjectReturnSingleObject() {
		String sql = "select id, username, password, email from bs_user where id = ?";
		
		RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
		
		
		User user = jt.queryForObject(sql, rowMapper, 1);
		System.out.println(user);
	}
	
	
	
	/**
	 * batchUpdate:批量增删改
	 */
	@Test
	public void testBatchUpdate() {
		String sql = "insert into bs_user(username, password, email) values ( ?, ?, ?)";
		
		ArrayList<Object[]> batchArgs = new ArrayList<>();
		
		batchArgs.add(new Object[] {"aa", "123", "1234@qq.com"});
		batchArgs.add(new Object[] {"bb", "123", "1223@qq.com"});
		batchArgs.add(new Object[] {"cc", "123", "1213@qq.com"});
		
		jt.batchUpdate(sql, batchArgs);
	}
	
	
	
	/**
	 * update方法:完成增删改
	 */
	@Test
	public void test() {
		String sql = "insert into bs_user(username, password, email) values ( ?, ?, ?)";
		jt.update(sql, "老王", "123", "123@qq.com");
		
	}

}

spring-jdbc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!-- 连接池 -->
    <context:property-placeholder location="classpath:db.properties"/>

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.user}"></property>
        <property name="password" value="${jdbc.password}"></property>
        <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
        <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
    </bean>
    
    <!-- JdbcTemplate -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!-- <constructor-arg ref="dataSource"></constructor-arg> -->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    
    

</beans>

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/bookstore_0416
jdbc.user=root
jdbc.password=123456
jdbc.initPoolSize=5
jdbc.maxPoolSize=20

User.java

package com.atguigu.spring.jdbc.beans;

public class User {
	private Integer id;
	private String username;
	private String password;
	private String email;
	
	
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + ", email=" + email + "]";
	}
	
	
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值