Spring Boot基础教程十四:使用 SQL 关系型数据库 spring-data-jpa

目录

1、配置数据源

2、Jpa 配置

3、实体类

4、定义接口(继承 JpaRepository) 

5、测试

6、扩展进行自定义的查询


1、配置数据源

在pom文件中加入:

<dependency> 
	<groupId>org.springframework.boot</groupId> 
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency> 
<dependency> 
	<groupId>mysql</groupId> 
	<artifactId>mysql-connector-java</artifactId> 
	<scope>runtime</scope>
</dependency> 

2、Jpa 配置

在application-dev.properties 或者类似文件中

#开发环境

#端口配置
server.port=8080

#数据库连接配置
spring.datasource.url=jdbc:mysql://localhost/spring_boot_demo?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# JPA
spring.jpa.hibernate.ddl-auto= update
spring.jpa.show-sql=true

3、实体类

@Entity
public class RoncooUserLog {

	@Id
	@GeneratedValue
	private Integer id;

	@Column
	private Date createTime;

	@Column
	private String userName;

	@Column
	private String userIp;

	public Integer getId() {
		return id;
	}

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

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserIp() {
		return userIp;
	}

	public void setUserIp(String userIp) {
		this.userIp = userIp;
	}

	@Override
	public String toString() {
		return "RoncooUserLog [id=" + id + ", createTime=" + createTime + ", userName="
 + userName + ", userIp=" + userIp + "]";
	}

}

4、定义接口(继承 JpaRepository) 

public interface RoncooUserLogDao extends JpaRepository<RoncooUserLog, Integer> {

	/**
	 * @param string
	 * @return
	 */
	@Query(value = "select u from RoncooUserLog u where u.userName=?1")
	List<RoncooUserLog> findByUserName(String userName);

	/**
	 * @param string
	 * @param string2
	 * @return
	 */
	List<RoncooUserLog> findByUserNameAndUserIp(String string, String string2);

	/**
	 * @param exampl
	 * @param pageable
	 * @return
	 */
	Page<RoncooUserLog> findByUserName(String userName, Pageable pageable);

}

5、测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootDemo141ApplicationTests {

	@Autowired
	private RoncooUserLogDao roncooUserLogDao;

	@Test
	public void insert() {
		RoncooUserLog entity = new RoncooUserLog();
		entity.setUserName("无境");
		entity.setUserIp("192.168.0.1");
		entity.setCreateTime(new Date());
		roncooUserLogDao.save(entity);
	}

	@Test
	public void delete() {
		roncooUserLogDao.delete(1);
	}

	@Test
	public void update() {
		RoncooUserLog entity = new RoncooUserLog();
		entity.setId(2);
		entity.setUserName("无境2");
		entity.setUserIp("192.168.0.1");
		entity.setCreateTime(new Date());
		roncooUserLogDao.save(entity);
	}

	@Test
	public void select() {
		RoncooUserLog result = roncooUserLogDao.findOne(1);
		System.out.println(result);
	}

	@Test
	public void select2() {
		List<RoncooUserLog> result = roncooUserLogDao.findByUserName("无境");
		System.out.println(result);
	}

	@Test
	public void select3() {
		List<RoncooUserLog> result = roncooUserLogDao.findByUserNameAndUserIp("无境", "192.168.0.1");
		System.out.println(result);
	}

	// 分页
	@Test
	public void queryForPage() {
		Pageable pageable = new PageRequest(0, 20, new Sort(new Order(Direction.DESC, "id")));
		Page<RoncooUserLog> result = roncooUserLogDao.findByUserName("无境", pageable);
		System.out.println(result.getContent());
	}

}

6、扩展进行自定义的查询

1. 使用内置的关键词查询 

http://docs.spring.io/spring-data/jpa/docs/1.10.2.RELEASE/reference/html/ 

2. 使用自定义语句查询 

各种语法,具体查看 

http://docs.spring.io/spring-data/jpa/docs/1.10.2.RELEASE/reference/html/ 

这个优先级比上面的高 

    @Test
	public void select2() {
		List<RoncooUserLog> result = roncooUserLogDao.findByUserName("无境");
		System.out.println(result);
	}

	@Test
	public void select3() {
		List<RoncooUserLog> result = roncooUserLogDao.findByUserNameAndUserIp("无境", "192.168.0.1");
		System.out.println(result);
	}

	// 分页
	@Test
	public void queryForPage() {
		Pageable pageable = new PageRequest(0, 20, new Sort(new Order(Direction.DESC, "id")));
		Page<RoncooUserLog> result = roncooUserLogDao.findByUserName("无境", pageable);
		System.out.println(result.getContent());
	}
发布了632 篇原创文章 · 获赞 758 · 访问量 51万+

猜你喜欢

转载自blog.csdn.net/songzi1228/article/details/104019020