Spring-BootSpringBoot极简教程 · Spring Boot

Spring Boot入门篇二: spring-data-jp

2017-12-15  本文已影响95人  水念

写在前面

本篇目标

实现步骤

1. 集成 mysql 数据库

这个很简单,只需要在我们的 pom.xml 文件中,增加 mysql 的依赖,代码如下:

<!-- mysql connection dependency -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>

然后,配置我们的数据源,哪里配置? 对了,在我们的 application.properties 文件中,不知道的同学可以看下第一篇讲的。下面是我的配置:

# mysql connection config
spring.datasource.url=jdbc\:mysql\://localhost\:3306/archer?useUnicode\=true&characterEncoding\=utf8
spring.datasource.username=admin
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

至此,我们 mysql 的集成已经告一段落了,

2. Spring Data JPA 集成

下面是 spring-data-jpa 的集成。同样,你也需求在 pom.xml 中增加相关依赖:

<!-- spring-data-jpa dependency -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

application.properties 中增加 JPA 的相关配置:

# JPA
spring.jpa.open-in-view=true
spring.jpa.hibernate.ddl-auto=update

这里需要说下这两个配置的作用:

3. 创建 User 类

完整的代码如下:

package com.example.domain;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name = "user")
public class User implements Serializable {
    private static final long serialVersionUID = -2248190721476487645L;

    @Id
    @SequenceGenerator(name = "user_generator", sequenceName = "user_generator", initialValue = 23)
    @GeneratedValue(generator = "user_generator")
    @Column(name = "id")
    private Long id;

    @Column(name = "name", nullable = false)
    private String name;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

4. 创建 UserDao 类

完成的代码如下:

package com.example.dao;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;

import com.example.domain.User;

public interface UserDao extends PagingAndSortingRepository<User, Long> {

    Page<User> findAll(Pageable pageable);
    
    @Query("from User as u")
    List<User> findUsers();
    
    User findByName(String name);
}

5. 创建 UserService 接口及其实现类

以下是 UserService 接口的完整代码:

package com.example.service;

import java.util.List;

import com.example.domain.User;

public interface UserService {
    
    List<User> findUser();

}

我这里只定义了一个查询接口,主要是为了演示。下面是它的实现类的完整代码,即 UserServiceImpl 类:

package com.example.service;

import java.util.List;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.example.dao.UserDao;
import com.example.domain.User;

@Component("userService")
@Transactional 
public class UserServiceImpl implements UserService {
    
    private final UserDao userDao;
    
    public UserServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public List<User> findUser() {
        return this.userDao.findUsers();
    }

}

6. 创建 UserController 类

完整的代码如下:

package com.example.web;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.example.domain.User;
import com.example.service.UserService;

@Controller
public class UserController {

    @Autowired
    private UserService userService;
    
    @RequestMapping("/user/list")
    @ResponseBody
    @Transactional(readOnly = true)
    public List<User> getUsers() {
        return userService.findUser();
    }
}

所有的后台代码都已经编写完成,下面我们来测试一下。

7. 使用 Ajax 测试后端 Restful API 接口

<body>
  <script src="../statics/assets/jquery/jquery-2.0.3.min.js"></script>
  <script src="../statics/js/main.js"></script>
</body>
;(function($) {
  // 声明严格模式
  'use strict';
  
  // DOM 加载完成执行
  $(function () {
    // 异步加载数据
    $.ajax({
      url: './user/list',
      type: 'POST',
      dataType: 'JSON',
      success: function (data) {
        console.log(data); // [{id:1, name:"zs"},{id:2, name:"李思"}]
      }
    });
  });

})(jQuery)

当我们访问 localhost:8080F12 启用 chrome 浏览器控制台可以看到:

image.png

好了,感谢你的阅读,Enjoy it~

相关资源

上一篇下一篇

猜你喜欢

热点阅读