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. ...
随机推荐
- C++ 生成随机数 srand()和rand()
1. rand() rand(产生随机数)表头文件: #include<stdlib.h>定义函数 :int rand(void) 函数说明 :因为rand() 的内部实现是用线性同余法做 ...
- Educational Codeforces Round 72 (Rated for Div. 2)
https://www.cnblogs.com/31415926535x/p/11601964.html 这场只做了前四道,,感觉学到的东西也很多,,最后两道数据结构的题没有补... A. Creat ...
- ABP增加记录EFCore 生成数据库脚本日志到新的txt文件
由于EFCore并没直接生成脚本到txt文件,故而自己画了点时间把实现记录下来,方便给大家参考. 0.安装Microsoft.Extensions.Logging.Debug,我这里是2.1.1版本. ...
- thymeleaf 语法
一.语法: 1. 简单表达式 (simple expressions) ${...} 变量表达式 *{...} 选择变量表达式 #{...} 消息表达式 @{...} 链接url表达式 2.字 ...
- 关于.NET HttpClient方式获取微信小程序码(二维码)
随着微信小程序的火热应用,市面上有关小程序开发的需求也多了起来.近来分析了一项生成有关生成微信小程序码的需求——要求扫码跳转到小程序指定页面(带参数):看了下小程序官方文档文档,结合网上的例子,未看到 ...
- mybatis - 通用mapper
title: 玩转spring-boot-mybatis date: 2019-03-11 19:36:57 type: "mybatis" categories: mybatis ...
- mkdir,rmdir
mkdir (选项)(参数) 创建文件夹-m:创建文件夹的同时,赋予其权限-p:若创建目录的上层不存在时,一并创建出来-v:显示创建的过程创建多个目录的时候,用空格隔开 rmdir (选项)(参数) ...
- git将当前分支上修改的东西转移到新建分支
比如我在A分支做了一些修改,现在由于某种原因(如A分支已经合并到master)不能把A分支上修改的东西保留下来但是需要把A分支上修改的东西继续在新分支继续修改.那么现在我们可以有两种简单的做法完成这一 ...
- js悬浮、回到顶部
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ES6——箭头函数与普通函数的区别
ES6标准新增了一种新的函数:Arrow Function(箭头函数). 为什么叫Arrow Function?因为它的定义用的就是一个箭头: 语法: //1.没有形参的时候 let fun = () ...