您的位置:首页 > 编程语言 > Java开发

spring boot jpa简单入门

2016-10-17 22:29 274 查看
一.创建maven工程,引入依赖jar包

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
<relativePath />
</parent>

<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>二.创建Application.java程序入口类
@ComponentScan
@EnableAutoConfiguration
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}三.在resources文件夹下创建application.properties
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql:///springboot
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

四.创建User对象
@Entity
@Table(name = "t_user")
public class User {

@Id
private String id;
@Column
private String name;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}

public User(String id, String name) {
super();
this.id = id;
this.name = name;
}

public User() {
}
}

五.创建UserRepository接口,继承与CurdRespository
public interface UserRepository extends CrudRepository<User, String> {

@Query("select u from User u where u.name= :name")//使用Query查询
User findByName(@Param("name") String name);

User findOne(Example<User> example);//使用Example查询

}或者继承与PagingAndSortingRepository

public interface UserRepository extends PagingAndSortingRepository<User, String> {

Page<User> findAll(Pageable pageable);//分页查询

@Query(value = "SELECT u FROM User u WHERE u.name = ?1", countQuery = "SELECT count(*) FROM User u WHERE u.name = ?1")
Page<User> findByName(String name, Pageable pageable);//约束分页

}
六.测试接口
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class UserRepositoryTest {

@Autowired
private UserRepository userRepository;//注入接口<span style="font-family: Arial, Helvetica, sans-serif;">UserRepository</span>

@Test
public void testFindByName() {
String name = "ss";
User user = userRepository.findByName(name);
assertEquals(name, user.getName());
}

@Test
public void testFindOne() {
String name = "ss";
User user = new User();
user.setName(name);

// ExampleMatcher matcher =
// ExampleMatcher.matching().withIgnorePaths("id");

// Example<User> example = Example.of(user, matcher);
Example<User> example = Example.of(user);
User result = userRepository.findOne(example);

assertEquals(name, result.getName());
}@Test
<span style="white-space:pre"> </span>public void testFindAllPageable() {
<span style="white-space:pre"> </span>Page<User> page = userRepository.findAll(new PageRequest(0, 2));
<span style="white-space:pre"> </span>List<User> users = page.getContent();//转化为list
<span style="white-space:pre"> </span>assertEquals(1, users.size());
<span style="white-space:pre"> </span>}

<span style="white-space:pre"> </span>@Test
<span style="white-space:pre"> </span>public void testFindByLastname() {
<span style="white-space:pre"> </span>Page<User> page = userRepository.findByLastname("s", new PageRequest(0, 2));
<span style="white-space:pre"> </span>assertEquals(1, page.getNumberOfElements());
<span style="white-space:pre"> </span>}
}

总结:使用spring boot jpa体现出了约束优于配置,省去了编写大量的配置文件,自注入EntityManage,操作起来更为方便。
源代码链接:https://github.com/wangjianyangchn/SpringBootProject/tree/master/JPA
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: