SpringData的JpaRepository

Spring Data(三)|使用MySQL访问数据 参考官方文档:https://spring.io/guides/gs/accessing-data-mysql 环境:IDEA、Java8、maven、springboot 实践内容:使用MySQL访问数据 pom.xml主要的依赖 在mysql的命令行中创建数据库db_example create database db_example; 在mysql命令行中创建新的连接数据库用户spr... 阅读详情

用SpringData的JpaRepository连接MySQL的一个超简单的实践

需求分析:

  • 搭建SpringData连接MySql的环境,并成功运行

技术难点分析

  • 如何配置数据源的连接
  • 如何配置实体类到表的映射
  • bean和repostory如何配置

需求实现

  • 导入依赖

最开始我们需要导入相关的依赖:

<dependency>
        <groupId>org.springframework.boot</groupId
        <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.21</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 配置数据源

在springboot,我们数据源的配置只需要写在application.properties文件中,springboot会自动找到该文件,并进行配置。其内容如下:

spring.datasource.url=jdbc:mysql://localhost:3306/sys
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.properties.hibernate.hbm2ddl.auto=create
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 编写实体类
    我们给实体类加上@Entity加上注解后,实体类User会将首字母变为小写和数据库中的user表相对应。
@Entity
public class User {
    @Id
    @GeneratedValue
    private Long id;

    @Column(nullable=false)
    private String name;

    @Column(nullable=false)
    private Integer age;

    public User(){}

    public User(String name, Integer age){
        this.name = name;
        this.age = age;
    }
    省略get/set方法。。。
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 编写Repository
    我们写一个自己的接口UserRepository来继承JpaRepository接口,规范的接口方法会自动被解析为正确的查询语句。在SpringData中的Repository中为我们提供了实现类,因此我们这里只需要定义接口就行了。
@Repository
public interface UserRepository extends JpaRepository<User, Long>{

    User findByName(String name);
    User findByNameAndAge(String name, Integer age);

    @Query("from User u where u.name=:name")
    User findUser(@Param("name") String name);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 编写JavaConfig配置类
    到目前为止,这类Bean都只是被定义了,相当于他们还是散落在容器外的沙石,我们需要这些沙石来建造房屋。那么我们需要JavaConifg来对其进行配置,这样这些沙石才能被spring容器所管理,变成真正有用的材料。
@Configuration
@ComponentScan
@EnableJpaRepositories
public class ApplicationConfig {


}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我们可以看到这里配置的类中什么都没有,这是因为我们在通过注解的方式来自动配置这些类。@Component注解会扫描当前类所在的包,及其子包找到那些有@Controller、@Service、@Repository等注解的类,并把他们注册到spring容器中。但是要注意这里我们必须要加上@EnableJpaRepositories,这个是比较特殊的因为用它注解的是一个接口,即我们的UserRepository 接口,通过@Component是不能达到注册这个Repository目的的。

  • 编写测试类
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(ApplicationConfig.class)
public class ApplicationTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void test() throws Exception {

        // 创建10条记录
        userRepository.save(new User("AAA", 10));
        userRepository.save(new User("BBB", 20));
        userRepository.save(new User("CCC", 30));
        userRepository.save(new User("DDD", 40));
        userRepository.save(new User("EEE", 50));
        userRepository.save(new User("FFF", 60));
        userRepository.save(new User("GGG", 70));
        userRepository.save(new User("HHH", 80));
        userRepository.save(new User("III", 90));
        userRepository.save(new User("JJJ", 100));

        // 测试findAll, 查询所有记录
        Assert.assertEquals(10, userRepository.findAll().size());

        // 测试findByName, 查询姓名为FFF的User
        Assert.assertEquals(60, userRepository.findByName("FFF").getAge().longValue());

        // 测试findUser, 查询姓名为FFF的User
        Assert.assertEquals(60, userRepository.findUser("FFF").getAge().longValue());

        // 测试findByNameAndAge, 查询姓名为FFF并且年龄为60的User
        Assert.assertEquals("FFF", userRepository.findByNameAndAge("FFF", 60).getName());

        // 测试删除姓名为AAA的User    userRepository.delete(userRepository.findByName("AAA"));

        // 测试findAll, 查询所有记录, 验证上面的删除是否成功
        Assert.assertEquals(9, userRepository.findAll().size());
    }
}
踩坑记录:Clawdbot 对接 Minimax 报错 “401 token is unusable (1004)“ 的终极解决方案 如果你也在配置 Clawdbot 对接 Minimax 模型时,明明 API Key 是新申请的,却死活报错 `401 Unauthorized`,错误码 `1004`,提示 `token is unusable`——那么恭喜你,来对地方了。 阅读详情

相关推荐

AI量化交易工作台Vibe-Trading:用自然语言驱动策略回测与多智能体研究

量化交易通过数学模型和计算机程序执行投资决策,其核心在于将市场规律转化为可验证的策略。传统量化开发涉及数据获取、策略编写、回测验证等复杂工程,对非编程背景的从业者构成较高门槛。随着大语言模型技术的发展,自然语言交互正成为降低技术使用难度的关键。Vibe-Trading项目正是这一趋势的实践,它将金融工程任务封装为可调用的工具与技能,允许用户通过自然语言指令直接驱动策略回测、因子研究和投资组合分析。其技术价值在于构建了一个模块化的AI Agent框架,通过ReAct推理框架协调多个专项技能,并创新性地引入多智

weixin_28695161的博客 1567

用SpringData的JpaRepository连接MySQL的一个超简单的实践

需求分析: 搭建SpringData连接MySql的环境,并成功运行 技术难点分析 如何配置数据源的连接 如何配置实体类到表的映射 bean和repostory如何配置 需求实现 导入依赖 最开始我们需要导入相关的依赖:<dependency> <groupId>org.springframework.boot</groupId <artifactId>spring-

小新正在敲代码 1万+

win10下面安装MTK USB VCOM 驱动

win10下面安装MTK USB VCOM 驱动1.概述2.驱动准备3.主要步骤3.1禁用win10对没有签名驱动限制3.2通过设备管理器安装mtk usb vcom驱动3.3工具版本问题4.禁用win10对没有签名的驱动限制4.1在设置中打开 更新和安全4.2进入恢复4.3在高级启动中点击立即重新启动4.4电脑重启后的几个动作5.通过设备管理器安装MTK USB VCOM 驱动5.1准备驱动5....

qimi123456的专栏 3万+

jpa连接mysql数据库_springboot-连接数据库的几种方式-JPA

前言我们已经学习了如何通过IDEA创建一个简单的springboot helloworld了,那么springboot如何连接mysql呢?几种方式Spring为各种支持的持久化技术,都提供了简单操作的模板和回调,目前大概有如下几种ORM持久化技术模板类JDBCorg.springframework.jdbc.core.JdbcTemplateHibernateorg.springframewor...

weixin_34213766的博客 542

WSL2 Ubuntu复现FoundationPose项目(docker)

复现一个基于深度学习的物体姿态估计框架FoundationPose项目,使用docker,WSL2

woaidawangwang的博客 2000

劳特巴赫 Trace32 调试使用教程

详细介绍如何使用trace32进行调试

m0_56208280的博客 4万+

jpa mysql_Spring boot通过JPA访问MySQL数据库

本文展示如何通过JPA访问MySQL数据库。JPA全称Java Persistence API,即Java持久化API,它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据,结合其他ORM的使用,能达到简化开发流程的目的,使开发者能够专注于实现自己的业务逻辑上。Spring boot结合Jpa 能够简化创建 JPA 数据访问层和跨存储的持久层功能,用户的持久层Dao接口只...

weixin_33700875的博客 402

包成功安装tiny-cuda-nn,记录安装过程中的问题解决,附带pytorch3d安装【踩坑指南】

该包可以显著提高NeRF训练速度,是和NeRFstudio等框架中,必须使用的。本文提供tiny-cuda-nn可以安装的完整包的下载链接,可以直接上传到项目中安装。附带笔者遇到的问题的解决方案。

zik的博客 7029

springdata和mysql_SpringBoot整合SpringData和Mysql数据库

1.新建maven项目(具体的新建过程就不细说了)2.添加maven依赖,也就是在pom.xml文件添加项目的依赖jar包:4.0.0springboot-testbootTestwar0.0.1-SNAPSHOTbootTest Maven Webapphttp://maven.apache.orgorg.springframework.bootspring-boot-starter-paren...

weixin_28878311的博客 263

数据库课程案例——电力公司收费管理系统分析与实践,完整带SQL语句

某电力公司收费管理信息系统实现客户信息、用电类型(类别号、类别名、电价)及业务员管理;实现客户用电信息管理(客户号、月份、用电类别号、用电度数);实现客户费用管理(客户号、月份、费用、收费标志),收费标志的默认值为“未收”;实现收费登记(客户、月份、应收费用、实收费用、业务员),并自动修改收费标志(用触发器实现);创建触发器,实现收费时自动更加应收费用和实收费用,计算本次结余,然后修改客户信息表中的结余金额;创建存储过程统计指定月份应收费用和实收费用;创建存储过程查询指定月份未交费的用户信息,以便崔费;创建

qq_44242804的博客 2762

YOLOv11改进策略【Head/分割头】| 结合CVPR-2024 中的DynamicConv 动态卷积 改进分割头, 优化模型(独家改进)

在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。

Limiiiing的博客 2310

springdata JpaRepository 总结篇

 1、包含自定义几口、JpaRepository接口以及可扩展的JpaRepository的方法(findByName)@Repository("jpaTestDao")publicinterfaceJpaTestDao extendsJpaRepository&lt;T_aVo,Integer&gt;,JpaTestFactory{   T_aVofindByName(String name);...

成长的笨熊 1744

新系统申请软件著作权详细操作说明

今年八月底版权中心系统升级,新系统相对好用一些,至少不用再拿IE访问了,但是多了一项实名认证。下面介绍新系统的操作流程。 目录注册、登录和实名认证注册登录实名认证软件登记申请申请表填写鉴别材料身份证明文件权利归属证明文件其他材料提交材料变更登记 注册、登录和实名认证 首先访问版权中心系统:https://register.ccopyright.com.cn/login.html,如果老系统有账号直接登录即可,没有的话需要注册。 注册 点击注册按钮进入注册。 根据实际情况选择个人或单位,每个个人或单位只能在

Programming Talk 1万+

springData 之 jparepository 的使用

目的:使用纯粹的spring提供的方式构建项目,不想插入其余的框架技术。例如 hibernate等使用方式:1、定义对象实体并加入对应标签。(由于在接口继承的时候,它自动的方法可能满足不了你的需求,所以你需要在几口中进行扩展,且不需要扩展)import javax.persistence.Entity;import javax.persistence.Id;import javax.persist...

成长的笨熊 1972

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SpringData JPA中JpaRepository解释

参考:https://blog.youkuaiyun.com/tt____tt/article/details/81105257 JpaRepository<T,ID> 例如JpaRepository<User,Integer>,实体类型是User,而实体类的id属性类型是Integer。

qq_33759042的博客 471

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

springData学习(五)JpaRepository和JpaSpecificationExecutor接口学习

1.JpaRepository接口中的主要方式有: 其实很以前的方法一样,我们主要学习一下findAll(Sortsort)方法 @Test public void testFindAllSort() { Order order = new Order(Sort.Direction.DESC, "age"); Sort sort = new Sort(order); L...

java_chegnxuyuan的博客 1190

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SpringData JpaRepository接口(八)

可以发现JpaRepository是PagingAndSortingRepository的子接口具有的方法如下我们来测试其中一个方法,saveAndFlush方法注意,这里的person和person2其实并不是同一个对象啊。。。运行测试类以后,这个对象就会被新建在数据库中。...

qq_41686190的博客 454

SpringData_JpaRepository接口

该接口提供了JPA的相关功能 List<T> findAll(); //查找所有实体 List<T> findAll(Sort sort); //排序、查找所有实体 List<T> save(Iterable<? extends T> entities);//保存集合 void flush();//执行缓存与数据库同步 T saveAndFl...

weixin_30598225的博客 100

Spring Boot中CrudRepository与JpaRepository

原文链接:https://blog.youkuaiyun.com/xuemengrui12/article/details/80525227 自学Spring Boot的时候看到书上在介绍Spring Data JPA的时候,用的是JpaRepository接口,但看很多的博客用的是CrudRepository,为了搞明白两者的关系,决定好好研究下,先看下两者的接口代码: @NoRepositoryBean ...

weixin_45335305的博客 372

【SpringBoot学习笔记】SpringBoot_01_SpringData—JpaRepository查询功能

1.JpaRepository支持接口规范方法名查询 如果在接口中定义的查询方法符合它的命名规则,就可以不用写实现类 2.相关功能查询 a.Spring Data JPA框架在进行方法名解析时,会先把方法名多余的前缀截取掉,比如find、findBy、read、readBy、get、getBy,然后对剩下部分进行解析 b.假如创建如下的查询:findByUserDepU

love__nana 737

【SpringBoot学习笔记】SpringBoot_03_SpringData—JpaRepository部分字段查询功能

关于jpa这个玩意,搞Java开发的基本都很喜欢,对数据操作实在是太方便了 只要设定对应的实体类,就可轻而易举的返回结果 当提供的方式不满足时,我们还可以自定义查询方式,使用@Query注解手写sql 为了提高效率,我们需要查询指定字段,很轻而易举的就能写出来 @Query(value="select 字段1,字段2 from 表名 where 字段=?1", nativeQuery=tr

love__nana 2697

spring mvc 的jpaRepository层

AppleFramework在数据访问控制层采用了Spring Data作为这一层的解决方案,下面就对Spring Data相关知识作一个较为详细的描述。1.Spring Data所解决的问题Spring Data :提供了一整套数据访问层(DAO)的解决方案,致力于减少数据访问层(DAO...

chengjian0201的博客 133

SpringData之repository接口详解

SpringData官方文档以下是本人阅读各种大牛博客 + 官方文档总结的知识点 避免大家学习走弯路 总结如下Repository 接口是 Spring Data 的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法 与继承 Repository 等价的一种方式。@RepositoryDefinition 注解,并为其指定 domainClass 和 idClas

just xiaoqiang 4757

(转)CrudRepository JpaRepository PagingAndSortingRepository之间的区别

1. 简介 本文介绍三种不同的Spring Data repository和它们的功能,包含以下三种: CrudRepository PagingAndSortingRepository JpaRepository 简单地说,Spring Data中的每个repository都继承自Repository接口,但是,除此之外,它们每个又有不同的功能。 2. Spr...

weixin_30887919的博客 303

SpringData JPA分页查询

首先我们需要知道SpringData JPA 的几个接口 其实看名字就大概懂了,也可以很方便的使用 首先我们的持久化层继承JpaRepository,相当于继承了增删改查的持久化层以及分页查询的持久化层 所以如果我们要使用分页查询 ,我们只需要直接调用 由一开始的图也可以看到Pageable的其中一个实现,直接新建一个对象传给你的持久层即可 下面是

心有猛虎,细嗅蔷薇 1415

SpringData JPA -JPA接口体系

一)JPA接口的继承结构 1.1)SpringData 加入的主要是两个包 1.SpringData-Commons.jar 2.SpringData-jpa.jar 1.2)JPA接口分布在这两个包下每个接口主要的作用和方法介绍 1.JapResposttory:接口 该接口是开放是常用的接口,此接口为封装了对数据库常用的Curd操作。 此接口存放于SpringData-...

失忆๑的博客 417
上一篇: Camel使用场景
下一篇: Spring单例模式及线程安全
TuxedoLinux
博客等级 码龄9年 268粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值