JdbcTemplate实现增删改查操作
JdbcTemplate介绍
为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架,Spring Boot Spring Data-JPA。
作为 SpringJDBC 框架的核心, JDBC 模板的设计目的是为不同类型的JDBC操作提供模板方法. 每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务。
通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最低。
JdbcTemplate方法介绍
JdbcTemplate主要提供以下五类方法:
1、execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
Execute、executeQuery、executeUpdate
2、update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句 SQL SERVCER(GO SQL语句 GO) ;
3、query方法及queryForXXX方法:用于执行查询相关语句;
4、call方法:用于执行存储过程、函数相关语句。
JdbcTemplate实现增删改查
JdbcTemplate添加数据
1. 使用配置实现
1.1 创建实体类
public class Account {
private Integer accountid;
private String accountname;
private Double balance;
public Integer getAccountid() {
return accountid;
}
public void setAccountid(Integer accountid) {
this.accountid = accountid;
}
public String getAccountname() {
return accountname;
}
public void setAccountname(String accountname) {
this.accountname = accountname;
}
public Double getBalance() {
return balance;
}
public void setBalance(Double balance) {
this.balance = balance;
}
}
实体类
1.2 创建Dao层
//查询所有所有账户 public List<Account> getAllAccounts();
查询方法
.3 创建Dao层实现类并继承JdbcDaoSupport接口
public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao {
@Override
public List<Account> getAllAccounts() {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
String sql = "select * from accounts";
//RowMapper:接口 封装了记录的行映射关系
List<Account> lists = jdbcTemplate.query(sql, new RowMapper<Account>() {
@Override
public Account mapRow(ResultSet resultSet, int i) throws SQLException {
//创建Account对象
Account account = new Account();
//从ResultSet中解数据保到Accounts对象中
account.setAccountid(resultSet.getInt("accountid"));
account.setAccountname(resultSet.getString("accountname"));
account.setBalance(resultSet.getDouble("balance"));
return account;
}
});
return account;
}
实现查询方法
1.4创建Service层
//查询所有所有账户 public List<Account> getAllAccounts();
查询方法
1.5创建Service层实现类
AccountDao accountDao;
@Override
public List<Account> getAllAccounts() {
List<Account> allAccounts = accountDao.getAllAccounts();
return allAccounts;
}
实现查询方法
1.6 编写applicationContext.xml文件
<!--识别到配置文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--配置数据源-->
<!--spring内置的数据源:提供连接的,不负责管理,使用连接池-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!--构建jdbcTemplate-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="accountDao" class="cn.spring.accounttest.dao.impl.AccountDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<!--Service-->
<bean id="accountService" class="cn.spring.accounttest.service.impl.AccountServiceImpl">
<property name="accountDao" ref="accountDao"></property>
</bean>
applicationContext.xml
1.7编写测试类
@Test
public void getAllAccount(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
//从spring容器中获取Service对象
AccountService accountService = (AccountService)context.getBean("accountService");
List<Account> allAccounts = accountService.getAllAccounts();
for (Account account:allAccounts) {
System.out.println("账户名:"+account.getAccountname()+",余额为:"+account.getBalance());
}
}
查询测试类
2. 使用注解方式实现
2.1 创建实体类
实体类
2.2 创建Dao层
查询方法
2.3 创建Dao层实现类
@Repository
public class AccountDaoImpl implements AccountDao {
@Autowired
private JdbcTemplate jdbcTemplate;
Account account = new Account();
@Override
public List<Account> getAllAccounts() {
String sql = "select * from accounts";
//自动映射
RowMapper<Account> rowMapper = new BeanPropertyRowMapper<>(Account.class);
List<Account> query = jdbcTemplate.query(sql, rowMapper);
for (Account account : query) {
System.out.println(account);
}
return query;
}
}
Dao实现类
2.4创建Service层
2.5创建Service层实现类
实现查询方法
2.6编写applicationContext.xml文件
<!--扫描注解:包扫描器-->
<context:component-scan base-package="cn.spring"/>
<!--识别到配置文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--配置数据源-->
<!--spring内置的数据源:提供连接的,不负责管理,使用连接池-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!--构建jdbcTemplate-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
applicationContext.xml
2.7编写测试类
查询测试类
JdbcTemplate实现增删改操作
使用注解方式实现,配置式同添加操作
1.创建Dao层
//删除账户 public int delAccount(int id); //添加用户 public int addAccount(Account account); //修改账户 public int updaAccount(Account account);
增删改方法
2.创建Dao曾实现类
@Override
public int delAccount(int id) {
String sql="delete from accounts where accountid=2";
int count = jdbcTemplate.update(sql);
return count;
}
@Override
public int addAccount(Account account) {
String sql="insert into Accounts(accountname,balance) values(?,?)";
int count = jdbcTemplate.update(sql,account.getAccountname(),account.getBalance());
return count;
}
@Override
public int updaAccount(Account account) {
String sql="update accounts set accountname=?,balance=? where accountid=?";
int count = jdbcTemplate.update(sql, account.getAccountname(),account.getBalance(),account.getAccountid() );
return count;
}
增删改方法实现类
3. 创建Service层
增删改方法
4. 创建Service层实现类
增删改方法实现类
5. 编写applicationContext.xml文件
applicationContext.xml
6. 编写测试类
@Test
public void delAccount(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
AccountService accountService =(AccountService) context.getBean("accountServiceImpl");
int i = accountService.delAccount(2);
if (i>0){
System.out.println("删除成功");
}
}
@Test
public void addAccount(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
AccountService accountServiceImpl = (AccountService) context.getBean("accountServiceImpl");
Account account=new Account();
account.setAccountname("刘磊");
account.setBalance(Double.valueOf(784));
int count = accountServiceImpl.addAccount(account);
if (count>0){
System.out.println("添加成功");
}
}
@Test
public void updaAcccount(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
AccountService accountServiceImpl = (AccountService) context.getBean("accountServiceImpl");
Account account=new Account();
account.setAccountid(10);
account.setAccountname("刘磊");
account.setBalance(Double.valueOf(784));
int count = accountServiceImpl.updaAccount(account);
if (count>0){
System.out.println("修改成功");
}
}
增删改测试类
JdbcTemplate实现增删改查操作的更多相关文章
- spring学习(四)spring的jdbcTemplate(增删改查封装)
Spring的jdbcTemplate操作 1.Spring框架一站式框架 (1)针对javaee三层,每一层都有解决技术 (2)到dao 层,使用 jdbcTemplate 2.Spring对不同的 ...
- mongoVUE的增删改查操作使用说明
mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- 详谈easyui datagrid增删改查操作
转自:http://blog.csdn.net/abauch_d/article/details/7734395 前几天我把easyui dadtagrid的增删改查的实现代码贴了出来,发现访问量达到 ...
- PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码
PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...
- 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧
通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...
- 05_Elasticsearch 单模式下API的增删改查操作
05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...
- JDBC连接数据库及增删改查操作
什么是JDBC?Java语言访问数据库的一种规范,是一套APIJDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类 ...
- Elasticsearch 单模式下API的增删改查操作
<pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...
随机推荐
- docker部署jenkins
步骤一: 查找jenkins镜像(也可以直接去jenkins官网找镜像docker pull jenkins/jenkins)(官方版本文档https://hub.docker.com/_/jenki ...
- Flask中的路由、实例化参数和config配置文件
Flask中的路由 endpoint 别名不能重复,对应的视图函数,默认是视图函数名.endpoint 才是路由的核心.视图函数与路由的对应关系.可以通过url_for 反向创建url # metho ...
- 自己动手实现智能家居之树莓派GPIO简介(Python版)
[前言] 一个热爱技术的人一定向往有一个科技感十足的环境吧,那何不亲自实践一下属于技术人的座右铭:“技术改变世界”. 就让我们一步步动手搭建一个属于自己的“智能家居平台”吧(不要对这个名词抬杠啦,技术 ...
- Spring MVC-从零开始-第一个控制器(不考虑命名规范)
1.目录结构 (log4j.properties.mybatis-config.xml可忽略) 2.配置web.xml文件 <?xml version="1.0" encod ...
- 读《深入理解Elasticsearch》点滴-改善查询相关性
1.标准查询 query match _all query:"搜索字符串" operator:or 2.多匹配查询+区分权重 query multi_match "que ...
- Chrome浏览器启动报错:应用程序无法启动,因为应用程序的并行配置不正确。
因为国庆节了,难得关一次机(可能搞IT的习惯吧),结果给祖国庆祝完70寿辰之后归来,启动电脑,就打不开Chrome浏览器了,报错如下: 应用程序无法启动,因为应用程序的并行配置不正确.有关详细信息,请 ...
- SpringBoot 连接kafka ssl 报 CertificateException: No subject alternative names present 异常解决
当使用较新版本SpringBoot时,对应的 kafka-client 版本也比较新,如果使用了 2.x 以上的 kafka-client ,并且配置了 kafka ssl 连接方式时,可能会报如下异 ...
- js常用Matn函数的操练
Math.PI console.log(Math.PI); 随机数以及向下取整 这是一个能实现从a-b之间随机打印一个整数 function rand_s(a, b) { var x = a + (b ...
- ActiveMQ学习总结------入门篇01
注:*这篇博文文章主要介绍ActiveMQ是什么原理性的内容和如何安装和简易操作 一. ActiveMQ 简介 1 ActiveMQ是什么呢?看起来好碉堡的东西哇! ActiveMQ 是 Apach ...
- Linux入门(用户操作及权限)
Linux入门之 用户操作及权限 在一个公司里,老板与员工有上下级之分,员工与员工间也有上下级或同级之分.每个级别在公司的职责不同,权限也不同.在Linux操作系统中也一样,不同的用户身份拥有着不 ...