Spring Data Jpa 快速上手

   Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!

一、新建spring boot项目

1..新建spring boot项目,左侧选择Spring Initializer,中间暂时不变,第三张图SQL那里选择的是JPA+MYSQL,然后下一步直到Finish

二、项目配置

2.检查pom.xml文件是否已经自动添加了需要的jar包(添加了可以省略这一步)

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

 3.在application.properties文件中添加mysql数据库的配置

#MySQL数据库配置(test为数据库名称,useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=true为时区相关,若不使用此段代码保存时间上将有可能出现问题)
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=true
#数据库名称 root (根据自己的数据库设置修改)
spring.datasource.username=root
#数据库密码 root (根据自己的数据库设置修改)
spring.datasource.password=root
#数据库连接驱动,cj报红没关系,仍然可以使用
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

三、创建实体类 

4.创建Package 'pojo',创建实体类Users  (可以使用逆向工程生成,参考Hibernate栏目下的文章,点此直接跳转

package com.example.demo.pojo;
import javax.persistence.*;

@Entity
public class Users {
    private int uid;         //用户主键
    private String username; //用户名
    private String password; //密码
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)  //id自增长 **********************************************************
    @Column(name = "uid", nullable = false)
    public int getUid() {
        return uid;
    }
    public void setUid(int uid) {
        this.uid = uid;
    }
    @Basic
    @Column(name = "username", nullable = false, length = 50)
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    @Basic
    @Column(name = "password", nullable = false, length = -1)
    public String getPassword() {
        return password;
    }
    @Override
    public String toString() {
        return "Users{" +
                "uid=" + uid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

四、接入Spring Data Jpa 

5.新建包 dao ,再新建接口

 接口再继承JpaRepository,就可以实现操作啦,接口实现层都不用写

6.新建Service包,新建IUsersService接口,以及其实现类UsersService   注入操作Users的dao接口

五、基本语法

7.数据操作在IUsersDao中写自定义的方法,当然spring data jpa 自带了一些方法(这里的查询例句来自网络)

自定义的简单查询就是根据方法名来自动生成SQL,主要的语法是findXXBy,readAXXBy,queryXXBy,countXXBy, getXXBy后面跟属性名称, 也使用一些加一些关键字And、 Or修改、删除、统计也是类似语法, 基本上SQL体系中的关键词都可以使用,例如:LIKE、 IgnoreCase、 OrderBy。

User findByUserName(String userName);

User findByUserNameOrEmail(String username, String email);

Long deleteById(Long id); 
Long countByUserName(String userName)

List<User> findByEmailLike(String email); 
User findByUserNameIgnoreCase(String userName); 
List<User> findByUserNameOrderByEmailDesc(String email);

8. 分页查询
    分页查询在实际使用中非常普遍了,spring data jpa已经帮我们实现了分页的功能,在查询的方法中,需要传入参数 Pageable,当查询中有多个参数的时候Pageable建议做为最后一个参数传入
Page<User> findALL(Pageable pageable); 
Page<User> findByUserName(String userName,Pageable pageable);  //传分页参数时可以这样PageRequest.of(pageNo - 1, pageSize),获取分页的内容List<Users> usersList = res.getContent();

Pageable 是spring封装的分页实现类,使用的时候需要传入页数、每页条数和排序规则

int page=1,size=10; 
Sort sort = new Sort(Direction.DESC, "id");     //这里按照id降序排列
Pageable pageable = new PageRequest(page, size, sort);

9.限制查询 有时候我们只需要查询前N个元素,或者只取前一个实体。

User findTopByOrderByAgeDesc();

Page<User> queryFirst10ByLastname(String lastname, Pageable pageable); 
List<User> findFirst10ByLastname(String lastname, Sort sort);

10.自定义SQL查询/多表连接查询

@Query(value = "SELECT u.uid,u.username,u.phone,u.email,u.role,g.unid,g.title FROM users u ,university g WHERE u.uid=g.uid",nativeQuery = true) //注意加nativeQuery = true
List<Map<String,Object>> getAllUniversityAndLeader();  //方法名随意取

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值