项目档案

下载Spring Tools Suite

对于本课程,我们将使用Spring Tools Suite作为我们的主要开发环境。Spring Tool Suite基于Eclipse IDE,并且经过定制以支持Spring开发。

您可以从https://spring.io/tools下载Spring Tool Suite。

复习Spring Boot的基础知识

由于我们在CMSC 250中介绍了Spring Boot的基础知识,我不打算为下面的示例提供大量文档。如果你觉得你需要复习一下基础知识,这里是我的CMSC 250课程笔记的链接,关于Spring Boot的基础知识。

第一个简单的示例赢博体育程序

对于我们的第一个简单示例项目,我将构建一个简单的Spring Boot赢博体育程序,它与我们的Auction数据库中的单个表(users表)进行交互。我们的第一个示例赢博体育程序将做最少的工作,将新用户插入到users表中,然后检查现有用户的用户名和密码。

启动一个项目

要创建一个新的Spring Boot项目,首先从File菜单中选择new /Spring Starter project。

出现的第一个对话框将询问您基本的项目设置。

除了项目的基本细节,包括项目名称和要使用的语言,我们还指定要使用的构建系统。在本课程中,我将使用Maven作为我的每个例子的构建系统。

项目设置对话框中的第二个屏幕将要求您为项目选择依赖项。

最初,我在本课程中展示的赢博体育项目示例都需要三个依赖项:来自Web类别的Spring Web和来自SQL类别的JDBC API和MySQL Driver。

项目初始配置

创建项目后的第一步是编辑赢博体育程序。属性文件,该文件存储赢博体育程序的配置信息。赢博体育程序。Properties文件位于项目的src/main/resources文件夹中。

我们将以下条目粘贴到application.properties中:

服务器。= 8085 spring.datasource港。url = jdbc: mysql: / / localhost: 3306 /拍卖spring.datasource。用户名=学生spring.datasource.password = Cmsc250 !spring.datasource.driver-class-name = com.mysql.cj.jdbc。司机spring.datasource.tomcat。最大等待= 20000 spring.datasource.tomcat。max-active = 50 spring.datasource.tomcat。最大空闲= 20 spring.datasource.tomcat.min-idle = 15

与数据库交互

与用户表交互的第一步是设置一个Java类来表示从表中绘制的用户。

要创建这个新类,我们右键单击edu.lawrence.auction包并选择创建新Java类的选项。将类命名为User,然后将以下代码粘贴到类中:

公共类用户{私有字符串密钥;私有字符串名称;private String密码;用户(){}公共字符串getKey(){返回键;}公共无效setKey(字符串键){这。Key = Key;}公共字符串getName(){返回名称;}公共无效setName(字符串名称){this.name =名称;}公共字符串getPassword(){返回密码;}公共无效setPassword(字符串密码){此。Password = Password;}}

下一步是创建一个RowMapper类,将从数据库返回的ResultSet行转换为User对象。创建一个新的UserRowMapper类,并在其中放入以下代码:

进口java.sql.ResultSet;进口java.sql.SQLException;进口org.springframework.jdbc.core.RowMapper;公共类UserRowMapper实现RowMapper<用户>{@重写公共用户mapRow(ResultSet行,int rowNum)抛出SQLException{用户u =新用户();u.setKey (row.getString (userid));u.setName (row.getString("名称"));u.setPassword (row.getString("密码"));回报你;}}

最后,我们需要一个Repository类,它可以与数据库进行实际的交互。下面是我们示例赢博体育程序的Repository类:

进口org.springframework.beans.factory.annotation.Autowired;进口org.springframework.jdbc.core.JdbcTemplate;进口org.springframework.jdbc.core.RowMapper;进口org.springframework.stereotype.Repository;@Repository public类UserDAO {@Autowired private JdbcTemplate JdbcTemplate;public User findByNameAndPassword(String name,String password) {String sql = “SELECT * FROM users WHERE name=? ”和密码= ?”;RowMapper<User> RowMapper = new UserRowMapper();用户结果= null;try {result = jdbcTemplate。queryForObject(sql, rowMapper, name, password);} catch(Exception ex){}返回结果;}公共字符串保存(用户用户){// MySQL生成一个唯一的id字符串idSQL = "select uuid()";String key = null;尝试{key = jdbcTemplate。queryForObject (idSQL String.class);} catch(Exception ex) {key = "Error";} if(key.equals("Error"))返回key;字符串insertSQL = "插入到用户(userid,name,password)的值(?, ?, ?);jdbcTemplate.update (insertSQL键,user.getName (), user.getPassword ());返回键;}}

我不打算详细介绍这个例子的细节,因为我们已经在CMSC 250中介绍了这些材料。如果您需要更新对JdbcTemplate类的理解,您可以阅读教科书中的5.3.1-5.3.3节、5.4节和5.5节。

控制器类

为了实现REST API,我们还需要RestController类。创建一个名为UserController的新类,并将以下代码放入其中:

进口org.springframework.web.bind.annotation.CrossOrigin;进口org.springframework.web.bind.annotation.GetMapping;进口org.springframework.web.bind.annotation.PostMapping;进口org.springframework.web.bind.annotation.RequestBody;进口org.springframework.web.bind.annotation.RequestMapping;进口org.springframework.web.bind.annotation.RequestParam;进口org.springframework.web.bind.annotation.RestController;@RestController @RequestMapping("/users") @CrossOrigin(origins = "*")公共类UserController {private UserDAO dao;公共UserController(UserDAO){这个。刀=刀;} @GetMapping(params = {"name", "password"}) public String checkLogin(@RequestParam(value = "name") String user, @RequestParam(value = "password") String password) {user result = dao。findByNameAndPassword(用户、密码);If (result == null){返回“”;}返回result.getKey();} @PostMapping公共字符串保存(@RequestBody用户用户){返回dao.save(用户);}}

这个简单的控制器将响应两个请求,一个是带有名称和密码查询参数的GET请求,另一个是发布新用户的POST请求。

因为我们已经在CMSC 250中介绍了REST控制器,所以我不打算详细评论这个例子。教科书中的9.11节详细介绍了REST控制器:您应该阅读该节以刷新您对控制器如何工作以及我在本示例中使用的各种注释如何工作的记忆。