一. 知识储备
前面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 + "]";
}
}