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. ...
随机推荐
- Dungeon Master POJ-2251 三维BFS
题目链接:http://poj.org/problem?id=2251 题目大意 你被困在了一个三维的迷宫,找出能通往出口的最短时间.如果走不到出口,输出被困. 思路 由于要找最短路径,其实就是BFS ...
- embedding技术
目录 word2vec 负采样 目标函数 反向梯度 层次softmax NPLM的目标函数和反向梯度 目标函数 反向梯度 GNN(图神经网络) deepwalk node2vec 附录 word2ve ...
- Ubuntu18.04安装PHP7.3
因为近期需要做毕业设计,需要用到Linux系统,在此分享一下在Linux-Ubuntu系统下安装PHP环境的一小点知识,如有偏差错误的,请各位学友多多指教哈! sudo apt-get install ...
- linux 设置查看文本行数
在一般模式下,即摁下esc按键下的模式: 设置行数为:set nu(此处的冒号需要带上) 取消行号为:set nonu(此处的冒号需要带上)
- 使用freemarker做邮件发送模板
1.解析工具类 package com.example.springbootfreemarker.utils; import freemarker.template.Configuration; im ...
- JPA 已作废的SQLQuery.class、setResultTransformer方法替换
1.hibernate 5.2 之后,SQLQuery.class.setResultTransformer方法已作废,其用法如下: Query query = entityManager.creat ...
- Flask基础(05)-->路由的基本定义
# 导入Flask from flask import Flask # 创建Flask的应用程序 app = Flask(__name__) # http://127.0.0.1:5000/123或者 ...
- vimrc配置文件
目录 vimrc配置文件 参考 主要功能 使用方法 配置文件 文件下载 vimrc配置文件
- 超大规模商用 K8s 场景下,阿里巴巴如何动态解决容器资源的按需分配问题?
作者 | 张晓宇(衷源) 阿里云容器平台技术专家 关注『阿里巴巴云原生』公众号,回复关键词"1010",可获取本文 PPT. 导读:资源利用率一直是很多平台管理和研发人员关心的话 ...
- 【Java】访问mysql数据库视图
数据库连接Connect: package cn.hkwl.zaxq.mysql; import java.sql.Connection; import java.sql.DriverManager; ...