市场调研表模板,seo挂机赚钱,网站静态,j2ee网站开发教程目录 1、简介
2、开发步骤
2.1、导入坐标
2.2、创建表和类
2.3、创建JdbcTemplate对象
2.4、执行数据库操作
3、解耦
4、增删改查 ⭐作者介绍#xff1a;大二本科网络工程专业在读#xff0c;持续学习Java#xff0c;努力输出优质文章 ⭐作者主页#xff1a;逐梦苍穹…目录 1、简介
2、开发步骤
2.1、导入坐标
2.2、创建表和类
2.3、创建JdbcTemplate对象
2.4、执行数据库操作
3、解耦
4、增删改查 ⭐作者介绍大二本科网络工程专业在读持续学习Java努力输出优质文章 ⭐作者主页逐梦苍穹 ⭐所属专栏JavaEE、Spring 1、简介
JdbcTemplate是Spring框架提供的一个核心类用于简化在Java应用程序中使用JDBCJava Database Connectivity时的操作。JDBC是Java连接数据库的标准API但使用纯JDBC编写数据库访问代码可能会显得繁琐和冗长。
它是spring框架中提供的一个对象是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如操作关系型数据的JdbcTemplate和HibernateTemplate操作nosql数据库的RedisTemplate操作消息队列的JmsTemplate等等。
JdbcTemplate封装了与数据库的交互细节提供了一组简单的方法使得数据库操作更加简洁和高效。通过JdbcTemplate你可以执行SQL查询、更新、批处理以及存储过程调用而无需手动处理数据库连接的打开和关闭。
JdbcTemplate的一些主要特点包括
简化的异常处理JdbcTemplate会自动捕获和转换JDBC异常为Spring的DataAccessException简化了异常处理过程。参数化查询JdbcTemplate支持参数化查询可以避免SQL注入等安全问题。结果集映射可以将查询结果映射到Java对象或基本数据类型。批处理操作支持批量插入和更新提高数据库操作效率。错误码处理提供错误码的解析便于处理数据库返回的错误信息。
使用JdbcTemplate可以有效地减少样板代码让数据库操作更加简单和可维护。它是Spring框架中数据访问的重要组成部分并被广泛应用于Java企业应用的开发中。
2、开发步骤
JdbcTemplate开发步骤
① 导入spring-jdbc和spring-tx坐标
② 创建数据库表和实体
③ 创建JdbcTemplate对象
④ 执行数据库操作
2.1、导入坐标
导入spring-jdbc和spring-tx坐标
!--导入spring的jdbc坐标--
dependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion5.0.5.RELEASE/version
/dependency
!--导入spring的tx坐标--
dependencygroupIdorg.springframework/groupIdartifactIdspring-tx/artifactIdversion5.0.5.RELEASE/version
/dependency
2.2、创建表和类
创建数据库表和实体 package com.xzl.domain;/*** author 逐梦苍穹* date 2023/8/4 16:32*/
public class Account {private String name;private double money;Overridepublic String toString() {return Account{ name name \ , money money };}public String getName() {return name;}public void setName(String name) {this.name name;}public double getMoney() {return money;}public void setMoney(double money) {this.money money;}
}
2.3、创建JdbcTemplate对象 2.4、执行数据库操作
package com.xzl.test;import com.alibaba.druid.pool.DruidDataSource;
import com.xzl.domain.Account;
import org.junit.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 javax.sql.DataSource;
import java.util.List;/*** author 逐梦苍穹* date 2023/8/4 16:35*/
public class jdbcTemplateTest {Testpublic void createJdbcTemplate(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml);DataSource dataSource_druid applicationContext.getBean(dataSource_druid, DataSource.class);JdbcTemplate jdbcTemplate new JdbcTemplate();jdbcTemplate.setDataSource(dataSource_druid);ListAccount accountList jdbcTemplate.query(select * from jdbctemplate, new BeanPropertyRowMapperAccount(Account.class));System.out.println(accountList);}
}
3、解耦
Spring产生JdbcTemplate对象
我们可以将JdbcTemplate的创建权交给Spring将数据源DataSource的创建权也交给Spring在Spring容器内部将数据源DataSource注入到JdbcTemplate模版对象中配置如下 这里有一个很容易犯的错误就是name的值有时候要出错。这里的name的值比如nameabc实际上Spring找的是一个setAbc方法。下面是错误写法 原因是 下面让Spring自动加载jdbc模板对象 4、增删改查
全部代码如下
package com.xzl.test;import com.xzl.domain.Account;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
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.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import javax.sql.DataSource;
import java.util.List;/*** author 逐梦苍穹* date 2023/8/4 16:35*/
RunWith(SpringJUnit4ClassRunner.class)
ContextConfiguration(classpath:applicationContext.xml)
public class jdbcTemplateTest {AutowiredQualifier(value jdbcTemplate)private JdbcTemplate jdbcTemplate;Testpublic void retrieve(){ListAccount accounts jdbcTemplate.query(select * from jdbctemplate,new BeanPropertyRowMapperAccount(Account.class));System.out.println(查询全部);for (Account account : accounts) {System.out.println(account);}Account account jdbcTemplate.queryForObject(select * from jdbctemplate where name?, new BeanPropertyRowMapperAccount(Account.class), xzl);System.out.println(查询单个account);Long aLong jdbcTemplate.queryForObject(select count(*) from jdbctemplate, Long.class);System.out.println(聚合查询-总数aLong);Long aLong1 jdbcTemplate.queryForObject(select sum(money) from jdbctemplate, Long.class);System.out.println(聚合查询-总和aLong1);}Testpublic void update(){jdbcTemplate.update(update jdbctemplate set money ? where name?;,1000,tom);}Testpublic void delete(){jdbcTemplate.update(delete from jdbctemplate where name?,tom);createJdbcTemplate();}Testpublic void create(){int row jdbcTemplate.update(insert into jdbctemplate values(?,?), tom, 5000);System.out.println(row);}Testpublic void SpringCreateJdbcTemplate(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml);JdbcTemplate jdbcTemplate applicationContext.getBean(jdbcTemplate, JdbcTemplate.class);ListAccount accountList jdbcTemplate.query(select * from jdbctemplate, new BeanPropertyRowMapperAccount(Account.class));System.out.println(accountList);}Testpublic void createJdbcTemplate(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml);DataSource dataSource_druid applicationContext.getBean(dataSource_druid, DataSource.class);JdbcTemplate jdbcTemplate new JdbcTemplate();jdbcTemplate.setDataSource(dataSource_druid);ListAccount accountList jdbcTemplate.query(select * from jdbctemplate, new BeanPropertyRowMapperAccount(Account.class));System.out.println(accountList);}
}