文章目录

  • 配置
  • 使用
    • 创建表
    • 创建实体类
    • 创建操作接口Repository
    • 读写数据
  • 总结

官方文档: https://docs.spring.io/spring-data/jdbc/docs/1.0.6.RELEASE/reference/html/
spring data jdbc是spring data产品中的一员, 它提供查询数据库并映射成实体的功能,类似于jpa,但没有实体生命周期管理这些复杂功能, 并且它对领域驱动设计提供了一些支持。

配置

添加依赖:

plugins {id 'org.springframework.boot' version '2.1.6.RELEASE'id 'java'
}apply plugin: 'io.spring.dependency-management'
// ... ...
dependencies {implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'implementation 'mysql:mysql-connector-java:8.0.17'// ... ...
}

配置类:

@Configuration
@EnableJdbcRepositories("com.example.springdatajdbcdemo") //这里的扫描目录要写好了
public class JdbcConfig {}

数据库参数配置:

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456

使用

用一个登录账号的小例子来演示用法

创建表

create database test;
drop table if exists test.account;
create table test.account(id bigint primary key auto_increment,login_name varchar(16) not null ,password varchar(16) not null
);

创建实体类

spring data jdbc读取记录后,会先创建对象,然后给对象赋值

@Data //用lombok来消除模板代码
public class Account {@Id  //标记属性为主键private Long id;private String loginName;private String password;//1.如果有无参数的构造函数, spring data jdbc会使用无参数的构造函数来创建对象//2.如果只有一个构造函数, spring data jdbc会使用它//3.如果有多个构造函数, spring data jdbc会使用有@PersistenceConstructor标记的那个@PersistenceConstructorpublic Account(Long id, String loginName, String password) {this.id = id;this.loginName = loginName;this.password = password;}
}

创建操作接口Repository

//继承CrudRepository, 第一个模板参数是实体类, 第二个参数是主键对应的数据类型
public interface AccountRepository extends CrudRepository<Account, Long> {}

读写数据

可以直接使用CrudRepository中的方法

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringDataJdbcDemoApplicationTests {@Autowiredprivate AccountRepository accountRepository;@Testpublic void testSave() {Account account = new Account(null, "test", "123456");account = accountRepository.save(account);log.info("save ok , id is {}", account.getId());Optional<Account> dbAccountOptional = accountRepository.findById(account.getId());Assert.assertTrue(dbAccountOptional.isPresent());Account dbAccount = dbAccountOptional.get();log.info("get login account: {}", dbAccount);Assert.assertEquals("test", dbAccount.getLoginName());Assert.assertEquals("123456", dbAccount.getPassword());}
}

也可以自己写查询语句:

public interface AccountRepository extends CrudRepository<Account, Long> {@Query("select * from account where login_name=:loginName")Optional<Account> getByLoginName(@Param("loginName") String loginName);
}

然后测试一下

    @Testpublic void testQuery() {Optional<Account> optionalAccount = accountRepository.getByLoginName("test");Assert.assertTrue(optionalAccount.isPresent());Account dbAccount = optionalAccount.get();log.info("get login account: {}", dbAccount);Assert.assertEquals("test", dbAccount.getLoginName());Assert.assertEquals("123456", dbAccount.getPassword());}

总结

以上就是spring data jdbc的基本操作了, 总的来说还是比较方便,定义一个实体类,写个接口,就能实现CRUD了, 没有spring data jpa复杂的生命周期, 没有mybatis那么复杂的代码(个人感觉使用mybatis generator也不是很方便)。
但还有许多不足之处, 比如不能使用spring data jpa那样使用方法名称查询, 而@Param标记也不能省略, 还有很多可以优化的地方。

spring data jdbc 基本使用相关推荐

  1. Spring Data JDBC通用DAO实现–迄今为止最轻量的ORM

    我很高兴宣布Spring Data JDBC存储库项目的第一个版本. 这个开放源代码库的目的是为基于Spring框架中 JdbcTemplate关系数据库提供通用,轻量且易于使用的DAO实现,与项目的 ...

  2. Spring Data JDBC、引用和聚合

    之前的博客文章中,我.描述了如何设置和使用 Spring Data JDBC.我还描述了使 Spring Data 原标题:Spring认证|Spring Data JDBC.引用和聚合 JDBC 比 ...

  3. Spring Data JDBC自动生成的增删改查CRUD分页、排序SQL语句非常简洁没有多余的SQL

    通过在application.properties文件中设置记录SQL日志 logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG ...

  4. 【转】Spring Data JDBC - Reference Documentation

    Spring Data JDBC - Reference Documentation Jens Schauder, Jay Bryant, Mark Paluch, Bastian Wilhelm V ...

  5. Spring Data JDBC入门使用Demo

    Spring Data JDBC入门使用Demo Spring Data JDBC is a simple, limited, opinionated ORM. Spring Data JDBC特点: ...

  6. Spring Data JDBC 详解

    目录 一.JPA背景 二.Spring Boot 整合Spring data JDBC 1. 配置数据源 2. 配置Druid的admin后台 3. Spring-data-jdbc常用接口查询策略 ...

  7. spring data jdbc的简单教程

    你需要先做一番配置,跟我来! 目录 配置springconfig 数据库和实体类配置. 数据库:就俩字段,一个是userid,一个是username 实体类: DAO层接口: 开始测试: 其他一些事项 ...

  8. Spring Data JPA 五分钟快速入门和实践

    Spring Data JPA(类似于Java Web 中的 DAO) 操作声明持久层的接口(Repository) 三个核心接口: CrudRepository PagingAndSortingRe ...

  9. Spring Data 发布更改版本管理方案之后的第一个版本:2020.0.0

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 2020年10月28日 Spring Data自更改版本 ...

最新文章

  1. ScaleYViewPager
  2. JZOJ 5609. 【NOI2018模拟3.28】Tree BZOJ 4919: [Lydsy1706月赛]大根堆
  3. Node.js v7 Beta版引入citgm
  4. 模糊图像处理 去除模糊_图像模糊如何工作
  5. 在unity向量空间内绘制几何(2):计算球体的表面坐标
  6. 【实习之T100开发】Genero FGL (TIPTOP4GL) 学习笔记(2)
  7. Java实现List数组的几种替代方案
  8. SpringMVC 整合Redis
  9. 批量删除2012年9月份以前的表
  10. 我的Android进阶之旅------>解决:Failed to create ‘XXX\build\outputs\apk\xxx.apks‘: 拒绝访问。
  11. 波士顿房价数据集——回归分析
  12. IC卡读写器c++builder源代码续
  13. 金融数据挖掘与分析(三)-案例实战(1)
  14. 域共享文件夹服务器怎么设置密码,域环境下共享文件夹加密、Windows 2008 Server局域网共享文件夹设置权限设置的方法...
  15. Eigen库计算两个向量夹角
  16. Cadence 软件快捷操作
  17. 线性代数——对向量的线性组合中的“线性”的理解
  18. H5手机QQ分享到手Q、QQ空间、微信好友、朋友圈础通用接口
  19. iOS App处于后台/被杀死的状态仍可进行语言播报的实现 (适配iOS12.1 ,iOS15的本地通知功能)
  20. 记2021DASCTF没做出来的那些题(已更新官wp版本)

热门文章

  1. Python 霍兰德人格分析雷达图
  2. mysql zimbra_记一次zimbra服务器故障导致mysql起不来问题
  3. docker制作hiredis环境:libhiredis.so.0.13: cannot open shared object file
  4. DXF库(dxflib)使用指南
  5. 数模(1)——层次分析法
  6. 50家硅谷IT公司技术博客
  7. linux 查重脚本,Linux脚本学习必经之路:Shell脚本实例分享
  8. 面向对象封装放大镜js代码
  9. 如何看待许多年轻人“疯狂”的投入到IT培训当中
  10. 所谓情商高,就是会说话2