Spring Boot 下JPA的简单使用
1:创建Spring Boot 项目
2:加入依赖
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>
<version>5.1.40</version>
</dependency>
WEB 依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3:配置数据源和JPA有关的配置
#DB Configuration:
spring.datasource.driverClassName =com.mysql.jdbc.Driver
spring.datasource.url = jdbc\:mysql\://127.0.0.1\:3306/qr_pgjy
spring.datasource.username = root
spring.datasource.password = root
JPA Configuration:
spring.jpa.database=MySQL
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
注意:hibernate 根据实体类自动维护数据库表结构的功能,可通过spring.jpa.hibernate.ddl-auto来配置,有下列可选选项。
create:启动时删除上一次生成的表,并根据实体类生成表,表中数据会被清空
create-drop:启动时根据实体类生成表,sessionFactory关闭时表会被删除。
update:启动时根据实体类生成表,当实体类属性变动的时候,表结构也会更新,在初期开发阶段使用此选项
validate:启动时验证实体类和数据表是否一致,在我们数据结构稳定时采用此选项。
none:不采取任何措施。
spring.jpa.show-sql:用来设置hibernate操作时候在控制台显示其真实的sql语句。
4:定义实体类映射
package com.example;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
@Entity//该注解指明这是一个和数据库表映射的实体类
@Table(name="qr_user")//映射的表名
public class User {
private static final long serialVersionUID = 1L;
@Id
@NotNull//非空
@GeneratedValue(strategy = GenerationType.AUTO)//自增
private int id;
@NotNull
@Column(name="phone")//映射字段,如果这里的字段名和数据库字段名一致,可以不写。
private String phone;
@Column(name="email")
private String email;
@Column(name="account")
private String account;
@Column(name="password")
private String password;
@Column(name="name")
private String name;
@Column(name="nickname")
private String nickname;
@Column(name="sex")
private int sex;
@Column(name="birth")
private int birth;
@Column(name="status")
private int status;
@Column(name="headpic")
private String headpic;
@Column(name="regtime")
private long regtime;
@Column(name="schoolid")
private int schoolid;
@Column(name="province")
private String province;//省
@Column(name="city")
private String city;//市
@Column(name="buy_count")
private int buy_count;//购买数量
//幼儿园名称
@Column(name="openid")
private String openid;//用户唯一标识
。。。。。get,set方法省略。。。。。
}
5:定义数据访问接口
public interface UserRepository extends JpaRepository<User,Long>{
User findByPhone(String phone);
List<User> findByCity(String city);
User findByPhoneAndCity(String phone,String city);
}
6:定义controller
package com.example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @package_name: com.example
* @class_name: DataController
* @author: cullinans
* @data: 17-1-6
* @desc:
*/
@RestController
public class DataController {
@Autowired
UserRepository userRepository;
@RequestMapping("/findAll")
public List<User> findAll(){
List<User> user=userRepository.findAll();
return user;
}
@RequestMapping("/findByPhone")
public User findByPhone(String phone){
return userRepository.findByPhone(phone);
}
@RequestMapping("/findByCity")
public List<User> findByCity(String city){
return userRepository.findByCity(city);
}
}
7:运行