spring Data Jpa

spring Data Jpa

springboot使用的Jpa实际上是spring Data Jpa,在pom.xml项目添加一下Druid依赖。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.14</version>
</dependency>

不知道为什么,反正我用的1.1.10版本会爆红,换成14就没事了。

完成对数据库和Jpa的配置

# 数据库的基本配置
spring.datasource.username=jpa
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/jpa?useUnicode=true&characterEncoding=UTF-8
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# JPA配置
spring.jpa.database=mysql
# 在控制台打印SQL
spring.jpa.show-sql=true
# 数据库平台
spring.jpa.database-platform=mysql
# 每次启动项目时,数据库初始化策略
spring.jpa.hibernate.ddl-auto=update
# 指定默认的存储引擎为InnoDB
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect

使用

ORM框架表示对象关系映射,不用我们去手动创建表了,框架根据我们的实体类去创建相应的数据表。

import lombok.Data;
import javax.persistence.*;
@Data
@Entity(name="t_user")
public class User {
    @Id
    @GeneratedValue
    private Integer id;
    @Column(name = "name")
    private String username;
    private String address;
}

@Entity表示这是一个实体类,这样子项目启动的时候就会生成一张表,默认表明是类的名字,name里面也可以指定自定义名字。@GeneratedValue表示主键的自增长策略,@Column可以配置字段的名称,长度,是否为空。

下面为dao层

import com.example.demo.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface UseDao extends JpaRepository<User,Integer> {
    List<User> getUserByAddressEqualsAndIdLessThanEqual(String address,Integer id);
    @Query(value = "select * from t_user where id = (select max(id) from  t_user)",
    nativeQuery = true)
    User maxIdUser();
}

基本用法是接口继承JpaRepository,里面已经有提供一些基本的数据操作方法,增删改查。也可以自己声明方法,,,只要命名规范。
controller层代码

package com.example.demo.controller;

import com.example.demo.dao.UseDao;
import com.example.demo.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {
    @Autowired
    private UseDao useDao;

    @GetMapping("/")
    public void addUser(){
        User user = new User();
        user.setId(1);
        user.setUsername("张三");
        user.setAddress("广州");
        useDao.save(user);
    }

    @DeleteMapping("/")
    public void deleteById(){
        User user = useDao.getOne(1);
        user.setUsername("李四");
        useDao.flush();
    }

    @GetMapping("/test1")
    public void test1(){
        List<User> all = useDao.findAll();
        System.out.println(all);
    }

    @GetMapping("/test2")
    public void test2(){
        List<User> list = useDao.getUserByAddressEqualsAndIdLessThanEqual("广州",2);
        System.out.println(list);
    }

    @GetMapping("/test3")
    public void test3(){
        User user = useDao.maxIdUser();
        System.out.println(user);
    }
}

上一篇:spring整合jpa 测试查询,查询不到中文字段?


下一篇:Springboot-jpa