JdbcTemplate是Spring框架中提供的一个对象,是对原始繁琐的jdbc API对象的简单封装。Spring框架提供了很多的操作模板类。例如:操作关系型数据的jdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等
1、导入坐标
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
<version>5.1.8.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-txartifactId>
<version>5.1.8.RELEASEversion>
dependency>
2、创建account表和Account实体
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Account {
// 姓名
private String name;
// 金额
private double money;
}
3、创建JdbcTemplate对象
4、执行数据库操作
方法一:
@Test
public void demo() {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
try {
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/manage?serverTimezone=GMT%2B8");
dataSource.setUser("root");
dataSource.setPassword("root");
// 创建jdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate();
// 设置数据源给JdbcTempalte
jdbcTemplate.setDataSource(dataSource);
// 执行操作
jdbcTemplate.update("insert into account values('张三', 20000.0)");
} catch (PropertyVetoException e) {
throw new RuntimeException(e);
}
}
方法二:
可以将JdbcTemplate的创建权交给Spring,将数据源DataSource的创建权也交给Spring,在Spring容器内部将数据源DataSource注入到JdbcTemplate模板对象中,配置如下:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/manage?serverTimezone=GMT%2B8"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource">property>
bean>
从容器中获得JdbcTemplate进行添加操作
@Test
public void demo1() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
JdbcTemplate jdbcTemplate = applicationContext.getBean(JdbcTemplate.class);
jdbcTemplate.update("insert into account values ('里斯', 30000)");
}
修改操作
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:application.xml")
public class DemoTest1 {
@Autowired
private JdbcTemplate jdbcTemplate;
@Test
public void testUpdate() {
jdbcTemplate.update("update account set money = ? where name = ?", 100, "张三");
}
}
删除金和查询操作
// 删除操作
@Test
public void testDelete() {
jdbcTemplate.update("delete from account where name = ?", "张三");
}
// 查询操作
@Test
public void testSelect() {
List<Account> accountList = jdbcTemplate.query("select * from account", new BeanPropertyRowMapper<Account>(Account.class));
for (Account account : accountList) {
System.out.println(account.getName());
}
}
注意:BeanPropertyRowMapper将数据库查询结果转化为java类对象。常应用于使用Spring的JdbcTemplate查询数据库,获取List结果列表,数据库表字段和实体类自动对应
查询单个数据操作
@Test
public void testSelect1() {
Account account = jdbcTemplate.queryForObject("select * from account where name = ?", new BeanPropertyRowMapper<Account>(Account.class), "里斯");
System.out.println(account.getName());
}
// 测试查询单个简单数据操作(聚合查询)
@Test
public void testQuery(){
Long Long= jdbcTemplate.queryForObject("select count(*) from account", Long.class);
System.out.println(Long);
}