目录

依赖

配置连接数据库

写实体类

如果出现Cannot resolve table 'XXX'

Repository层

控制层

不使用分页

使用分页

通过save更改

自己写sql语句

联表查询

自动生成(增加,修改)日期

整合querydsl

依赖

生成Q类

Repository继承qsl

实例


依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

配置连接数据库

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/vueblog?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=****
spring.datasource.password=****
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

写实体类

因为属于严格ORM,所以一定要一一对应。

目前先这样,后边会进行联表查询、时间自动写入。

/*** @author 刘通* @date 2022年01月15日 20:44*/
@Entity
@Table(name = "m_blog")
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Mblog {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Integer id;@Column(name = "user_id")private int userId;@Column(name = "title")private String title;@Column(name = "description")private String description;@Column(name = "content")private String content;@Column(name = "created")private Date created;@Column(name = "status")private int status;
}/*** @author 刘通* @date 2022年01月15日 20:25*/
@Entity
@Table(name = "m_user")
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Muser {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Integer id;@Column(name = "username")private String username;@Column(name = "avatar")private String avatar;@Column(name = "email")private String email;@Column(name = "password")private String password;@Column(name = "status")private int status;@Column(name = "created")private Date created;@Column(name = "last_login")private Date lastLogin;
}

如果出现Cannot resolve table 'XXX'

只需要先用idea连接数据库,选择数据源就可以了

Repository层

/*** @author 刘通* @date 2021年09月17日 19:27*/
public interface TestUserRepository extends JpaRepository<Muser,Integer>, PagingAndSortingRepository<Muser,Integer>, JpaSpecificationExecutor<Muser>{}

控制层

不使用分页

    @AutowiredTestUserRepository testUserRepository;@GetMapping("getList")public List<Muser> a(){List<Muser> all = testUserRepository.findAll();return all;}

使用分页

    @GetMapping("get")public Page<Muser> a(@PageableDefault(size = 10) Pageable page){System.out.println("test执行");Page<Muser> all = testUserRepository.findAll(page);return all;}

请求案例:

注意:page从0开始

localhost:8080/get?page=0&size=5

    @PostMapping("add")public Muser add(@RequestBody Muser muser){testUserRepository.save(muser);return muser;}

    @PostMapping("delete/{id}")public String add(@PathVariable int id){testUserRepository.deleteById(id);return "删除成功";}

通过save更改

id要吻合

    @PostMapping("update")public Muser update(@RequestBody Muser muser){testUserRepository.save(muser);return muser;}

自己写sql语句

// 在删除/更改语句中要用@Modifying
@Modifying
// 用sql语句就要开启nativeQuery
@Query(nativeQuery = true,value = "xxxxxxxxx")
public void updateById(int id);

联表查询

把上边实体类的userid更换

//
//    @Column(name = "user_id")
//    private int userId;@ManyToOne@JoinColumn(name = "user_id")private Muser muser;

之后就可以测试查询,就能成功

自动生成(增加,修改)日期

修改上边实体

 //   @Column(name = "created")//   private Date created;//   @Column(name = "last_login")//   private Date lastLogin;@Column(name = "created")@CreatedDate@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date created;@Column(name = "last_login")@LastModifiedDate@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date lastLogin;

在实体类上加注解@EntityListeners(AuditingEntityListener.class)

在启动类上加注解@EnableJpaAuditing

阿里规范每个表都要有创建时间和更新时间,所以我们可以把时间提取出来一个抽象类,让实体去继承

@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@Data
public abstract class AbDao {@Column(name = "created") //自定义通用就好@CreatedDate@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")private Date created;@Column(name = "last_login")//自定义通用就好@LastModifiedDate@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")private Date lastLogin;
}

整合querydsl

依赖

        <dependency><groupId>com.querydsl</groupId><artifactId>querydsl-jpa</artifactId><scope>provided</scope></dependency><dependency><groupId>com.querydsl</groupId><artifactId>querydsl-apt</artifactId><scope>provided</scope></dependency><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>com.mysema.maven</groupId><artifactId>apt-maven-plugin</artifactId><version>1.1.3</version><executions><execution><goals><goal>process</goal></goals><configuration>//输出目录<outputDirectory>target/generated-sources/java</outputDirectory><processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor></configuration></execution></executions></plugin></plugins></build>

生成Q类

直接clean+compile

或者

Repository继承qsl

public interface TestUserRepository extends JpaRepository<Muser,Integer>, PagingAndSortingRepository<Muser,Integer>, JpaSpecificationExecutor<Muser>,QuerydslPredicateExecutor<Muser>{}

实例

    public Predicate getContion(){QMuser muser = QMuser.muser;BooleanExpression between = muser.id.between(0, 5);BooleanExpression sd = muser.username.contains("sd").and(between);return sd;}@GetMapping("getList")public List<Muser> a(){List<Muser> all = (List<Muser>) testUserRepository.findAll(getContion());return all;}

如有疑问可私信

JPA结合querydsl使用相关推荐

  1. Spring JPA整合QueryDSL

    前言 Spring JPA是目前比较常用的ORM解决方案,但是其对于某些场景并不是特别的方便,例如查询部分字段,联表查询,子查询等. 而接下来我会介绍与JPA形成互补,同时也是与JPA兼容得很好的框架 ...

  2. springboot整合JPA+MYSQL+queryDSL数据增删改查

    Spring Boot Jpa 是 Spring 基于 ORM 框架.Jpa 规范的基础上封装的一套 Jpa 应用框架,可使开发者用极简的代码即可实现对数据的访问和操作.它提供了包括增删改查等在内的常 ...

  3. Spring Data Jpa使用QueryDsl接口出现的一些问题

    1.QuerydslPredicateExecutor当实现此接口时,如果出现什么什么类没有找到的时候,请确认相关的querydsl依赖是否已经添加到maven依赖中 <dependency&g ...

  4. Spring boot JPA+Gradle+QueryDSL 完美配置生成Q文件依赖

    1. 环境(理论上不限) IDEA 2019.3.5 springboot 2.3.0 gradle 6.3 querydsl 4.2.1 JDK 1.8 2. 核心配置(build.gradle ) ...

  5. jpa整合querydsl实现简单查询以及左联查询

    用意: 为了解决jpa复杂查询以及多表查询难以的问题,故找到该神器(querydsl),使用该框架后,可以使jpa像mybatis一样灵活,随心所欲.下面的代码只展示了常用的mysql操作,包含动态查 ...

  6. JPA 和 QueryDSL

    querydsl极简入门 QueryDSL+gradle+idea spring boot-jpa整合QueryDSL 关于 QueryDSL 配置和使用(详细) querydls关联查询 query ...

  7. JPA 复杂查询 - Querydsl

     添加依赖 <!--query dsl --> <dependency> <groupId>com.querydsl</groupId> <art ...

  8. Spring Data JPA REST Query QueryDSL

    案例概述 在本教程中,我们将研究使用Spring Data JPA和Querydsl为REST API构建查询语言. 在本系列的前两篇文章中,我们使用JPA Criteria和Spring Data ...

  9. Spring Data JPA 实战

    课程介绍 <Spring Data JPA 实战>内容是基于作者学习和工作中实践的总结和升华,有一句经典的话:"现在的开发人员是站在巨人的肩上,弯道超车".因现在框架越 ...

  10. java dsl框架_Spring Boot整合QueryDSL的实现示例

    之前研究Jooq,今天来研究一下搭配JPA的QueryDSL吧. 简介 Querydsl是一个Java开源框架用于构建类型安全的SQL查询语句.它采用API代替拼凑字符串来构造查询语句.可跟 Hibe ...

最新文章

  1. nginx try_files的理解
  2. bzoj 1492: [NOI2007]货币兑换Cash
  3. 自己动手实现arm函数栈帧回溯【转】
  4. golang mysql update_golang mysql insert 和 update使用举例
  5. 无人驾驶的分级以及产品化后会带来的改善
  6. 浅评-我所用的输入法
  7. Python3 高级用法
  8. 技术员 Ghost Win10 x86 装机版/纯净版 201710
  9. 如何改变报表在页面显示的大小和位置?
  10. 基于ASP.NET的助学贷款管理系统_WEB管理系统_SQLServer数据库应用
  11. jupyter添加新的语言包
  12. leetcode 5390. 数青蛙(C++)
  13. 利用代码将网站预测蛋白稳定性突变自动化
  14. matlab中muw,matlab – 获取属于凸包的点
  15. 关于 nscd,nslcd 和 sssd 套件的综述
  16. python基础 多点坐标 绘制折线图 计算两点距离
  17. 免费的PDF在线合并工具,拿走不谢!
  18. 学习牛津书的免费网站
  19. Oracle数据库综合试题
  20. 转:美国我来了:飞去美国各个程序最全解读

热门文章

  1. 记一次SQLServer2019安装和卸载问题的解决过程
  2. 位图转矢量图工具,快和模糊图片说白白
  3. WIN7运行命令大全
  4. 超好用的两行java代码能获取几乎所有文件的contentType,返回前端能在浏览器上直接打开
  5. Visual studio2012密钥 vs2012密钥 本人亲测 真实有效
  6. 口袋妖怪c语言代码大全,口袋妖怪漆黑的魅影金手指代码 游戏代码大全分享
  7. Android: eoeAndroid ~
  8. 魔兽单机服务器设置文件,魔兽世界单机版局域网的架设方法-20210311142535.doc-原创力文档...
  9. 2021年9月再次更新-日立电梯,艾默生变频器维修图纸,原理图
  10. qq空间html倒计时,空间倒计时flash代码,有图