JdbcTemplate方法介绍与增删改查操作实现

 更新时间:2019年11月02日 14:42:02   作者:農農  
这篇文章主要给大家介绍了关于JdbcTemplate方法与增删改查操作实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用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文件

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("修改成功");
 }
}

增删改测试类

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • SpringMVC拦截器详解

    SpringMVC拦截器详解

    本篇文章主要介绍了SpringMVC拦截器配置及使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-07-07
  • 利用MyBatis实现条件查询的方法汇总

    利用MyBatis实现条件查询的方法汇总

    这篇文章主要给大家介绍了关于利用MyBatis实现条件查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用MyBatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • SpringBoot logback日志框架使用过程解析

    SpringBoot logback日志框架使用过程解析

    这篇文章主要介绍了SpringBoot logback日志框架使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java操作excel的三种常见方法实例

    Java操作excel的三种常见方法实例

    这篇文章主要给大家介绍了关于Java操作excel的三种常见方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • springboot整合webservice使用简单案例总结

    springboot整合webservice使用简单案例总结

    WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,平台等,可以实现不同的语言间的相互调用,下面这篇文章主要给大家介绍了关于springboot整合webservice使用的相关资料,需要的朋友可以参考下
    2024-07-07
  • Spring DI依赖注入过程解析

    Spring DI依赖注入过程解析

    依赖注入是由“依赖”和“注入”两个词汇组合而成,那么我们再一次顺藤摸瓜,分别分析这两个词语,这篇文章主要介绍了Spring DI依赖注入详解,需要的朋友可以参考下
    2022-11-11
  • java线程池对象ThreadPoolExecutor的深入讲解

    java线程池对象ThreadPoolExecutor的深入讲解

    在我们的开发中“池”的概念并不罕见,有数据库连接池、线程池、对象池、常量池等等。下面这篇文章主要给大家介绍了关于java线程池对象ThreadPoolExecutor的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧
    2018-09-09
  • maven报错:Failed to execute goal on project问题及解决

    maven报错:Failed to execute goal on p

    这篇文章主要介绍了maven报错:Failed to execute goal on project问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • springboot多数据源配合docker部署mysql主从实现读写分离效果

    springboot多数据源配合docker部署mysql主从实现读写分离效果

    这篇文章主要介绍了springboot多数据源配合docker部署mysql主从实现读写分离,通过使用docker获取mysql镜像,具体内容详情跟随小编一起看看吧
    2021-09-09
  • 使用WebUploader实现分片断点上传文件功能(二)

    使用WebUploader实现分片断点上传文件功能(二)

    这篇文章主要为大家详细介绍了使用WebUploader实现分片断点上传文件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论