SpringBoot学习 —— JdbcTemplate操作数据库

本文详细介绍如何在Spring Boot项目中整合JdbcTemplate实现数据库操作,包括添加依赖、编写DAO和服务层代码,以及控制器的测试方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


整体步骤:

(1)   pom.xml加入jdbcTemplate的依赖;

(2)   编写DemoDao类,声明为:@Repository,引入JdbcTemplate

(3)   编写DemoService类,引入DemoDao进行使用

(4)   编写Demo2Controller进行简单测试。

 

具体操作流程如下:

 

使用JdbcTemplate类需要加入(如果在JPA已经加入的话,这个步骤就可以忽略了)

<dependency>

           <groupId>org.springframework.boot</groupId>

           <artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

那么只需要在需要使用的类中加入:

@Resource

privateJdbcTemplatejdbcTemplate;

这样就可以使用jdbcTemplate进行数据库的操作了。

比如:

String sql ="insertinto Demo(name,age) values(?,?)";

jdbcTemplate.update(sql,new Object[]{demo.getName(),demo.getAge()});

 

实战代码:

编写com.kfit.test.dao.DemoDao 数据库操作类:

package com.kfit.test.dao;

 

import javax.annotation.Resource;

 

importorg.springframework.jdbc.core.BeanPropertyRowMapper;

importorg.springframework.jdbc.core.JdbcTemplate;

importorg.springframework.jdbc.core.RowMapper;

importorg.springframework.stereotype.Repository;

 

import com.kfit.test.bean.Demo;

 

/**

 *使用JdbcTemplate操作数据库.

 *@author Administrator

 *

 */

@Repository

publicclass DemoDao {

   

    @Resource

    private JdbcTemplatejdbcTemplate;

   

    /**

     *通过id获取demo对象.

     *@param id

     *@return

     */

    public Demo getById(longid){

       String sql = "select *from Demo where id=?";

       RowMapper<Demo> rowMapper = newBeanPropertyRowMapper<Demo>(Demo.class);

       returnjdbcTemplate.queryForObject(sql,rowMapper,id);

    }

   

}

 

com.kfit.test.service.DemoService :

package com.kfit.test.service;

 

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.kfit.test.bean.Demo;

import com.kfit.test.dao.DemoDao;

import com.kfit.test.dao.DemoRepository;

 

/**

 *提供Demo服务类.

 * @author Administrator

 *

 */

@Service

public class DemoService {

      

       @Resource

       privateDemoRepository demoRepository;

      

       @Resource

       private DemoDaodemoDao;

      

       public voidsave(Demo demo){

              demoRepository.save(demo);

       }

      

       public Demo getById(longid){

              //demoRepository.findOne(id);//demoRepository可以直接使用findOne进行获取.

              returndemoDao.getById(id);

       }

}

 

 com.kfit.test.web.Demo2Controller :

package com.kfit.test.web;

 

importjavax.annotation.Resource;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.RestController;

importcom.kfit.test.bean.Demo;

importcom.kfit.test.service.DemoService;

 

@RestController

@RequestMapping("/demo2")

publicclass Demo2Controller{

    @Resource

    private DemoServicedemoService;

   

   

    /**

     *测试保存数据方法.

     *@return

     */

    @RequestMapping("/save")

    public String save(){

       Demo d = new Demo();

       d.setName("Angel");

       demoService.save(d);//保存数据.

       return"ok.Demo2Controller.save";

    }

   

    //地址:http://127.0.0.1:8080/demo2/getById?id=1

    @RequestMapping("/getById")

    publicDemo getById(longid){

       returndemoService.getById(id);

    }

   

}

 

剩下的就是启动进行测试了,访问地址:http://127.0.0.1:8080/demo2/getById?id=1

那么在浏览器中就可以看到:

{

id1,

name"Angel"

}

当前前提是你的数据库中有id=1的数据了,不然会报错的:

org.springframework.dao.EmptyResultDataAccessException

### Spring Boot 中 DAO 进行数据库操作的方式 在 Spring Boot 应用程序中,DAO(Data Access Object)用于处理与数据库交互的操作。以下是几种常见的方法来实现 DAO 数据库操作。 #### 1. 使用 `JdbcTemplate` 进行简单的 SQL 查询 Spring 提供了 `JdbcTemplate` 类作为简化 JDBC 数据库操作的一种方式。通过它可以直接执行 SQL 查询并映射结果集到 Java 对象上[^1]。 ```java import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; @Repository public class UserDao { private final JdbcTemplate jdbcTemplate; public UserDao(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public List<User> findAll() { String sql = "SELECT * FROM users"; return jdbcTemplate.query(sql, (rs, rowNum) -> new User( rs.getInt("id"), rs.getString("name"), rs.getString("email"))); } } ``` 上述代码展示了如何利用 `JdbcTemplate` 执行查询并将结果转换为自定义对象列表。 --- #### 2. 利用 Spring Data JPA 实现复杂的 ORM 映射 对于更复杂的应用场景,可以采用 Spring Data JPA 来管理实体类及其持久化逻辑。这种方式基于 Hibernate 或其他 JPA 提供者完成自动化的 CRUD 操作。 ```java import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface UserRepository extends JpaRepository<User, Long> { Optional<User> findByName(String name); } ``` 此接口继承了 `JpaRepository` 接口,从而获得了内置的支持方法以及动态生成的 JPQL/HQL 查询能力。 --- #### 3. 结合 MyBatis 完成灵活的数据访问需求 MyBatis 是另一种流行的 ORM 工具,在某些情况下可能更适合特定业务需求。它可以精确控制 SQL 并支持 XML 配置文件或者注解形式编写语句。 ```xml <!-- mybatis-mapper.xml --> <select id="selectUsers" resultType="com.example.User"> SELECT * FROM users WHERE email LIKE #{pattern} </select> ``` 对应的 Mapper 接口如下: ```java @Mapper public interface UserMapper { List<User> selectUsers(@Param("pattern") String pattern); } ``` 这种模式允许开发者完全掌控底 SQL 表达式的构建过程。 --- #### 4. 处理大数据量导入导出任务——借助 EasyExcel 和 Spring Batch 当涉及到大量数据读写时,除了传统的 JDBC 方法外还可以考虑引入第三方工具如 Apache POI 替代品 easyExcel 及批量框架 spring batch 。这些技术能够有效减少内存占用率同时提升效率[^2][^3]。 例如下面展示了一个简单例子说明怎样配置一个 step 去加载 excel 文件中的记录并通过 chunk-oriented processing 将其保存至数据库里去: ```java @Bean public Job importJob(JobRepository jobRepository, StepBuilderFactory stepBuilderFactory, ItemReader<List<Object>> reader, ItemWriter<List<Object>> writer){ return jobBuilderFactory.get("importJob") .incrementer(new RunIdIncrementer()) .flow(stepBuilderFactory.get("step1") .<List<Object>, List<Object>>chunk(10) .reader(reader) .writer(writer) .build()) .end() .build(); } ``` 在这里我们创建了一个名为 `importJob` 的作业包含单个步骤 (`step1`) ,该步骤每次从输入源读取最多十个条目交给处理器再传递给输出目标直到所有项目都被处理完毕为止. --- ### 总结 以上介绍了四种主要途径用来实现在 Spring Boot 下面搭建 DAO 来进行有效的数据库沟通手段。每种方案都有各自适用范围和优缺点,请依据实际项目的特性选取最合适的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值