分佈式01-Spring boot 快速搭建開發

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。經過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成爲領導者。html

進入https://start.spring.io/java

 

Gradle配置mysql

compile("org.springframework.boot:spring-boot-starter-data-jpa")spring

compile("mysql:mysql-connector-java")sql

application.properties 配置:api

spring.datasource.url = jdbc:mysql://localhost:3306/test數組

spring.datasource.username = rootmybatis

spring.datasource.password = rootapp

spring.datasource.driverClassName = com.mysql.jdbc.Driver框架

spring.jpa.database = MYSQL

spring.jpa.show-sql = true

# 是否自動建立表和字段

spring.jpa.hibernate.ddl-auto = update

spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

 

建立實體類

@Table(name = "role", uniqueConstraints = { @UniqueConstraint(columnNames = { "name", "shopId" }) })

 

建立實體類Repository

 

測試:

 

Repository使用

根據email地址和姓查詢數據

List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);

使用page作分頁(重點好用切記切記)

本身聲明 Pageable對象

Pageable pageable = new PageRequest(PageNumber(), PageSize(), Sort.Direction.ASC,"排序字段");

在controller用參數傳入:

Page<User> queryFirst10ByLastname(String lastname, Pageable pageable);

根據age字段倒敘

User findTopByOrderByAgeDesc();

用HQL查詢

@Query("select u from User u where u.emailAddress = ?1")User findByEmailAddress(String emailAddress);

使用本地sql語句查詢。nativeQuery = true

@Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = :emailAddress", 

nativeQuery = true)  User findByEmailAddress(@Param("emailAddress") String emailAddress);

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 < ?1

LessThanEqual

findByAgeLessThanEqual

… where x.age ⇐ ?1

GreaterThan

findByAgeGreaterThan

… where x.age > ?1

GreaterThanEqual

findByAgeGreaterThanEqual

… where x.age >= ?1

After

findByStartDateAfter

… where x.startDate > ?1

Before

findByStartDateBefore

… where x.startDate < ?1

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 age)

… 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)

缺點:

JPA 每次查詢都是整個對象查詢,也就是查詢表的全部字段(比select * 性能好)若是是單獨查詢某寫字段,JPA的是用數組返回。相對mybatis這個就很不方便。若是對select 出來的字段又嚴格要求,謹慎使用。

使用JPA的時候,儘可能把表字段分散,別在一張表放太多字段

Spring 官網參考地址

http://docs.spring.io/spring-data/jpa/docs/1.11.0.M1/reference/html/

相關文章
相關標籤/搜索