让我们构建一个简单的EmployeeManager Web服务,我们将使用它来演示与MongoDB连接的HATEOAS。为了引导我们的应用程序,我们将使用Spring Initializr。我们将使用Spring HATEOAS和Spring Data MongoDB作为依赖项。你应该看到类似下图2所示的内容。 图2 :引导应用程序配置完成后,下载zip并将其作为Maven项目导入你喜欢的IDE中。 首先,让我们配置applicationproperties。
springdatamongodbhost= //Mongo server host
springdatamongodbport= //Mongo server port
springdatamongodbusername= //Login user
springdatamongodbpassword= //Password
springdatamongodbdatabase= //Database name
一般来说,如果所有内容都是全新安装的,并且你没有更改或修改任何Mongo属性,则只需提供一个数据库名称(已经通过GUI创建了一个数据库名称)。
springdatamongodbdatabase = EmployeeManager
另外,为了启动Mongo实例,作者创建了一个bat,它指向安装文件夹和数据文件夹。它是这样的:"C:\Program Files\MongoDB\Server\36\bin\mongod" --dbpath D:\Inther\EmployeeManager\warehouse-data\db
现在,我们来快速创建模型。这里有两个模型,员工模型和部门模型。检查它们,确保有没有参数、getter、setter、equals方法和hashCode生成的构造函数。(不用担心,所有代码都在GitHub上,你可以稍后查看它:>
public class Employee {
private String employeeId;
private String firstName;
private String lastName;
private int age;
}
public class Department {
private String department;
private String name;
private String description;
private List<Employee> employees;
}
现在我们已经完成了模型的制作,让我们来创建存储库,以便来测试持久性。存储库如下所示:
public interface EmployeeRepository
extends MongoRepository<Employee, String> {
}
public interface DepartmentRepository
extends MongoRepository<Department,String>{
}
如上所示,这里没有方法,因为大家都知道Spring Data中的中心接口被命名为Repository,在其之上是CrudRepository,它提供了处理模型的基本 *** 作。在CrudRepository之上,我们有PagingAndSortingRepository,它为我们提供了一些扩展功能,来简化分页和排序访问。在我们的案例中,最重要的是MongoRepository,它用于严格处理我们的Mongo实例。因此,对于我们的案例来说,除了那些现成的方法外,我们不需要任何其他方法,但是仅出于学习目的,作者在这里要提到的是你可以添加其他查询方法的两种方法:
“惰性”(查询创建):此策略将尝试通过分析查询方法的名称并推断关键字(例如findByLastnameAndFirstname)来构建查询。编写查询:这里没有什么特别的。例如,只用@Query注释你的方法,然后自己编写查询。你也可以在MongoDB中编写查询。下面是基于JSON的查询方法的示例:@Query("{ 'firstname' : 0 }")
List<Employee> findByTheEmployeesFirstname(String firstname);
@Service public class EmployeeServiceImpl implements EmployeeService {
@Autowired
private EmployeeRepository employeeRepository;
@Override
public Employee saveEmployee(Employee e) {
return employeeRepositorysave(e);
}
@Override
public Employee findByEmployeeId(String employeeId) {
return employeeRepositoryfindOne(employeeId);
}
@Override
public void deleteByEmployeeId(String employeeId) {
employeeRepositorydelete(employeeId);
}
@Override
public void updateEmployee(Employee e) {
employeeRepositorysave(e);
}
@Override
public boolean employeeExists(Employee e) {
return employeeRepositoryexists(Exampleof(e));
}
@Override
public List<Employee> findAll() {
return employeeRepositoryfindAll();
}
@Override
public void deleteAll() {
employeeRepositorydeleteAll();
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)