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);
}
}