花了几天时间,好好看了看springboot的jpa部分,总结了常用的形式。

1.通过STS工具添加jpa的依赖项

   要连mysql,测试的时候需要web,顺便添加了lombok不写set和get方法了。

2.添加配置

application.properties:

要连接mysql、设置jpa的两个参数,一个是更改entity后更新表,还一个是显示sql,为了查错用

添加一个config类,开启jpa,添加扫描repository路径

最后需要建立一个web请求入口,方便调用调试,增加web很简单,这里就不说了。

3。添加entiry

写了两个类,一个MemberInfo 一个OrderInfo,OrderInfo包含了一个外键,为了测试一对多。

与数据库字段名相同的,可以不写column注解

4.建立repository

Repository是springboot data中的接口,不光是与db有关,相当于是个模板,与mongo、redis等都有一定关系,这里就不提了。

JpaRepository是使用jpa需要继承的接口,这个接口继承自Repository,只不过中间还有几层,包括crudRepository、pageRepository。

继承关系JpaRepository->PagingAndSortingRepository->CrudRepository->Repository

不同的接口之间包含了一些已有方法,其中包含分页。

下面建立自己的:一共建立了4个Repository,其中有一个是专门为了写sql的

@EnableJpaRepositories("com.xuezk.study.repository") 注解会扫描所有 extends JpaRepository的接口,但使用了@NoRepositoryBean注解的是不会被实例化的。其他两个接口直接继承Base就可以了。

专门用于写sql的接口:

说明:

1.每个方法上都可以使用@Query注解去写sql,但jpa的sql语法与hql相似,写的不是字段名,而是类里面的属性名。

2.jpa,会根据方法名字,比如findByName,就是根据name属性去查,关于Pageable,这是分页用的,作为参数后,执行的sql最后就会有limit限制。

3.关于最后接口中的 new MemberInfo,这么写是为了返回的结果存入对象内,否则返回的结果会是数组,与hibernate一样。

5.关于Pageable

作为分页的参数,Pageable却是一个接口,翻开源码包下面有一个PageRequest

Pageable实例化并不难

6。最后

我自己写的例子包含了一个service,分别去调用这几个Repository的方法,顺便打印出来。

jpa有一个特点我很喜欢,就是findBy的后面可以是对象,比如通过外键对象去查本条记录。

例子放在https://github.com/xuezhankui/SpringbootExample,使用testcontroller调用

  

二、springboot使用jpa的更多相关文章

  1. SpringBoot 使用JPA+MySQL+Thymeleaf 总结 二

    SpringBoot 使用JPA+MySQL+Thymeleaf 总结 一 SpringBoot 使用JPA+MySQL+Thymeleaf 总结 二 方法一 使用原生sql查询 或者 为方法名增加 ...

  2. SpringBoot数据访问(二) SpringBoot整合JPA

    JPA简介 Spring Data JPA是Spring Data大家族的一部分,它可以轻松实现基于JPA的存储库.该模块用于增强支持基于JPA的数据访问层,它使我们可以更加容易地构建使用数据访问技术 ...

  3. 带你搭一个SpringBoot+SpringData JPA的环境

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家对SpringBoot和Spring Da ...

  4. 用SpringBoot+MySql+JPA实现对数据库的增删改查和分页

    使用SpringBoot+Mysql+JPA实现对数据库的增删改查和分页      JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述 ...

  5. SpringBoot 使用JPA+MySQL+Thymeleaf 总结 一

    SpringBoot 使用JPA+MySQL+Thymeleaf 总结 一 SpringBoot 使用JPA+MySQL+Thymeleaf 总结 二 pom引用 <?xml version=& ...

  6. springboot支付项目之springboot集成jpa

    springboot集成spring-jpa 本文主要内容: 1:spring boot怎么集成spring-jpa以及第一个jpa查询示例 如jpa几个常用注解.lombok注解使用 2:怎么设置i ...

  7. Springboot+Atomikos+Jpa+Mysql实现JTA分布式事务

    1 前言 之前整理了一个spring+jotm实现的分布式事务实现,但是听说spring3.X后不再支持jotm了,jotm也有好几年没更新了,所以今天整理springboot+Atomikos+jp ...

  8. 【极简版】SpringBoot+SpringData JPA 管理系统

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在上一篇中已经讲解了如何从零搭建一个SpringBo ...

  9. Springboot+MyBatis+JPA集成

      1.前言 Springboot最近可谓是非常的火,本人也在项目中尝到了甜头.之前一直使用Springboot+JPA,用了一段时间发现JPA不是太灵活,也有可能是我不精通JPA,总之为了多学学Sp ...

随机推荐

  1. 【转】mac环境下Android 反编译

    一.需要的工具 apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件. dex2jar:将反编译后的classes.dex文件转化为.jar文件. jd ...

  2. ul li 实现层级列表显示

    实现效果如下: 实现要求具体如下: 1.标题有序号 上图标记1 2.标题下面的子集标题要有一定的缩进,且子集标题也有一定的序号,上图标记 2 3.如果子集标题内容过长,换行的时,开始的位置不能超过对应 ...

  3. LNMP 下使用命令导出导入 MySQL 数据库

    导出数据库 导出数据库为 db_wp.sql.gz 文件: 1 mysqldump -u数据库用户名 -p数据库密码 --add-drop-table --complete-insert 数据库名 | ...

  4. asp.net core 通过ajax调用后台方法(非api)

    1.    在Startup.cs文件中添加:        services.AddMvc();            services.AddAntiforgery(o => o.Heade ...

  5. SQL入门(1): 创建/查询/更新/连接/视图/SSMS简介

    本文介绍SQL的基本查询语句 (1) select... from  * 表示全部, 选择的东西还可以进行简单的运算, 可以列别名 select * from student; -sage from ...

  6. 爬虫请求库之selenium模块

    一 安装 #安装:selenium+chromedriver pip3 install selenium 下载chromdriver.exe放到python安装路径的scripts目录中即可,注意最新 ...

  7. Git使用九:合并和删除分支

    实际开发中的分支 目前的快照情况:git log --decorate --all --oneline --graph 可以看到,目前HEAD是指向的master分支 合并分支:git merge 分 ...

  8. 使用Selenium+ChromeDriver登录微博并且获取cookie

    using OpenQA.Selenium;using OpenQA.Selenium.Chrome; public class GetSinaCookie { private static stri ...

  9. git本地项目上传至码云gitee

    如果你的本机是安装成功第一次使用,先配置一下一些基本的信息 $ git config--global user.name "Your Name" $ git config --gl ...

  10. php获取两个时间戳之间相隔多少天多少小时多少分多少秒

    /** * 返回两个时间的相距时间,*年*月*日*时*分*秒 * @param int $one_time 时间一 * @param int $two_time 时间二 * @param int $r ...