spring-data-jpa入门案列
资料
中文文档 https://www.jianshu.com/p/b3da0c8a22fe
jpa注解
@Entity --声明为一个实体类bean
@Table (name= "promotion_info" ) --为实体bean映射指定表(表名="promotion_info)
@Id --声明了该实体bean的主键
@GeneratedValue --可以定义主键的生成策略.
@Transient --将忽略这些字段和属性,不持久化到数据库
@Column (name= "promotion_remark" ) --声明列(字段名= "promotion_total" ) 属性还包括(length= 200 等)
@Temporal (TemporalType.TIMESTAMP) --声明时间格式
@Enumerated --声明枚举
@Version --声明添加对乐观锁定的支持
@OneToOne --可以建立实体bean之间的一对一的关联
@OneToMany(mappedBy = "oneId") --可以建立实体bean之间的一对多的关联
@ManyToOne --可以建立实体bean之间的多对一的关联
@ManyToMany --可以建立实体bean之间的多对多的关联
@Formula --一个SQL表达式,这种属性是只读的,不在数据库生成属性(可以使用sum、average、max等)
@OrderBy --取出的集合排序
@JoinColumn --设置对应数据表的列名和引用的数据表的列名
入门案列
sql准备
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`age` varchar(32) DEFAULT NULL,
`gender` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
application.properties配置
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
# 如果需要,可以进行自动建表
#spring.jpa.hibernate.ddl-auto=update
# 如果需要,可以执行指定的sql文件进行建表
#spring.datasource.schema=sql/test.sql
# 如果需要,可以显示执行的sql语句
spring.jpa.show-sql=true
# 如果需要,可以格式化sql语句
spring.jpa.properties.hibernate.format_sql=true
pom.xml
pom使用ideal建springboot项目 选 web jpa mysql
代码
package com.yjf.bean;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "t_user")
public class User {
@Id
private int id;
private String name;
private int age;
private String gender;
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
}
import com.yjf.bean.User;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface UserDao extends JpaRepository<User, Integer> {
List<User> findAll();
}
package com.yjf;
import com.yjf.bean.User;
import com.yjf.dao.UserDao;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
private UserDao userDao;
@Test
public void contextLoads() {
List<User> res = userDao.findAll();
res.stream().forEach(System.out::println);
}
}
2019-09-11 15:23:08.557 INFO 2832 --- [ main] o.h.h.i.QueryTranslatorFactoryInitiator : HHH000397: Using ASTQueryTranslatorFactory
Hibernate:
select
user0_.id as id1_0_,
user0_.age as age2_0_,
user0_.gender as gender3_0_,
user0_.name as name4_0_
from
t_user user0_
User{id=7, name='briup', age=20, gender='MAN'}
User{id=8, name='woodcool1', age=21, gender='MAN'}
User{id=9, name='woodcool2', age=22, gender='MAN'}