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
@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
<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
相关文章推荐
- Spring Boot、Hibernate、JPA、SQL Server简单demo用例
- spring boot 入门-使用spring boot构建简单应用
- SpringDataJpa的简单入门使用
- Spring Boot(一)简单入门
- spring-data-jpa快速入门(二)——简单查询
- Spring Boot简单入门之Hello Word
- Spring Boot入门——JPA
- spring boot----简单入门
- SpringDataJPA入门就这么简单
- Spring boot 入门系列(一):快速搭建一个简单web系统(简单的SSM框架)
- Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅
- Spring Boot访问mysql(JPA方式)最简单配置
- spring boot 学习之路1(简单入门)
- spring boot 简单入门 ====Hello World
- Spring Boot任务调度简单入门
- Spring Boot访问mysql(JPA方式)最简单配置
- Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅
- SpringDataJpa的简单入门使用
- 【spring boot】9.spring boot+spring-data-jpa的入门使用,实现数据持久化
- spring Boot学习入门篇-idea开发简单的hello world实例