SpringBoot2.x-整合JPA(转发)
2021-03-02 13:26
标签:serve comm 功能 持久 mode XML ext his 没有 CrudRepository和PagingAndSortingRepository由Spring Data提供;JpaRepository 由Spring Data JPA提供,而Spring Data JPA又是Spring Data的一个子项目 SpringBoot2.x-整合JPA(转发) 标签:serve comm 功能 持久 mode XML ext his 没有 原文地址:https://www.cnblogs.com/name-lizonglin/p/14409031.htmlpom.xml配置
application.properties配置
spring.datasource.url=jdbc:mysql://localhost:3306/v_chat?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
# 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
#遇到大写字母 加”_”的命名, 驼峰命名
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
番外:
ddl-auto:create----每次运行该程序,没有表格会新建表格,表内有数据会清空
ddl-auto:create-drop----每次程序结束的时候会清空表
ddl-auto:update----每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新
ddl-auto:validate----运行程序会校验数据与数据库的字段类型是否相同,不同会报错
实体类对象
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
*
* User -> 用户实体类
*
*
* @author 撸小鱼
* Copyright (c) lofish@foxmail.com
*/
@Entity(name = "t_user")
public class User{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String address;
public Long getId(){
return id;
}
public void setId( Long id ){
this.id = id;
}
public String getUsername(){
return username;
}
public void setUsername( String username ){
this.username = username;
}
public String getAddress(){
return address;
}
public void setAddress( String address ){
this.address = address;
}
}dao接口定义
import net.lofish.xpra.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
*
* UserDao -> dao层
*
*
* @author 撸小鱼
* Copyright (c) lofish@foxmail.com
*/
public interface UserDao extends JpaRepository测试
@SpringBootTest
class SpringbootXpraApplicationTests{
@Autowired
UserDao userDao;
@Test
void contextLoads(){
}
@Test
void testUserDao(){
userDao.getUserByAddressEqualsAndIdLessThanEqual( "abc", 1l );
}
}
结果
Hibernate: select user0_.id as id1_0_, user0_.address as address2_0_, user0_.username as username3_0_ from t_user user0_ where user0_.address=? and user0_.id
按照规范命名方法, jpa自动转换层对应的查询sql语句
Keyword
Sample
JPQL snippet
And
findByLastnameAndFirstname
... where x.lastname = ?1 and x.firstname = ?2
Or
findByLastnameOrFirstname
... where x.lastname = ?1 or x.firstname = ?2
"Is
Equals"
"findByFirstname,findByFirstnameIs,findByFirstnameEquals"
... where x.firstname = ?1
Between
findByStartDateBetween
... where x.startDate between ?1 and ?2
LessThan
findByAgeLessThan
... where x.age
LessThanEqual
findByAgeLessThanEqual
... where x.age
GreaterThan
findByAgeGreaterThan
... where x.age > ?1
GreaterThanEqual
findByAgeGreaterThanEqual
... where x.age >= ?1
After
findByStartDateAfter
... where x.startDate > ?1
Before
findByStartDateBefore
... where x.startDate
IsNull
findByAgeIsNull
... where x.age is null
"IsNotNull
NotNull"
findByAge(Is)NotNull
... where x.age not null
Like
findByFirstnameLike
... where x.firstname like ?1
NotLike
findByFirstnameNotLike
... where x.firstname not like ?1
StartingWith
findByFirstnameStartingWith
... where x.firstname like ?1?(parameter bound with appended?%)
EndingWith
findByFirstnameEndingWith
... where x.firstname like ?1?(parameter bound with prepended?%)
Containing
findByFirstnameContaining
... where x.firstname like ?1?(parameter bound wrapped in?%)
OrderBy
findByAgeOrderByLastnameDesc
... where x.age = ?1 order by x.lastname desc
Not
findByLastnameNot
... where x.lastname ?1
In
findByAgeIn(Collection ages)
... where x.age in ?1
NotIn
findByAgeNotIn(Collection ages)
... where x.age not in ?1
TRUE
findByActiveTrue()
... where x.active = true
FALSE
findByActiveFalse()
... where x.active = false
IgnoreCase
findByFirstnameIgnoreCase
... where UPPER(x.firstame) = UPPER(?1)
Repository接口
Spring Data中的每个repository都继承自Repository接口,但是,除此之外,它们每个又有不同的功能
,这就是两者的关系
文章标题:SpringBoot2.x-整合JPA(转发)
文章链接:http://soscw.com/index.php/essay/59045.html