java - 带有 RESTful Web 应用程序的 JDBC 模板和 AngularJS

标签 java angularjs jdbc spring-boot restful-architecture

我正在尝试使用 MS SQL 数据库中的数据填充 HTML 表格。我已经为 sql server 设置了我的 app.properties,并在我的 .java 文件中声明了我的 jdbcTemplate。我对 AngularJS 和 jdbcTemplate 完全陌生。有人可以提供一些示例代码或为我指明正确的方向吗?

提前致谢!

table.html

<h2>Industry Maintenance SIC Table</h2>

<div ng-controller="tableController">

    <p>Click <a ng-click="loadObjects()">here</a> to load data.</p>

    <!-- table -->
     <table class="table table-bordered table-hover table-condensed">
        <tr style="font-weight: bold">
            <td style="width:40%">SIC Code</td>
            <td style="width:50%">SIC Code Description</td>
        </tr>
        <tr ng-repeat="object in objects">
            <td>{{object.code}}</td>
            <td>{{object.description}}</td>
        </tr>
    </table>

</div>

table.controller.js

(function () {
      'use strict';

      angular.module('support-dash.pi.table').controller('tableController', tableController);

      function tableController($scope, $http){

          $scope.objects = [];

          $scope.loadObjects = function(){

              ***DONT KNOW WHAT TO PUT HERE
          }


      };
})();

HelloResource.java

    package supportdash.api;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;

@Path("hello")
public class HelloResource {

    @GET
    public String retrieve() {
        return "Hello";
    }

    @Autowired
    JdbcTemplate jdbcTemplate;

}

最佳答案

让我们从 Sprin 开始吧。您需要一个 RESTful api,所以示例 Controller 应该是这样的:

@Controller
   @RequestMapping("/hello")
   public class ShowController {

   @Autowired
   private YourRepository yr;

   @RequestMapping(value = "/getObjects", method = RequestMethod.GET)
       public List<Object> home(Model model) {
       List<Object> objects = yr.getObjects();
       return objects;
       }

}

现在,如果您使用服务并在您的 Controller @Autowired 中使用类似YourService 的服务会更好,您可以在其中调用存储库并对数据库中的数据执行各种逻辑。但是让我们尽可能简单。

现在 YourRepository 应该是这样的:

public interface YourRepository{
  public List<Object> getObjects();
}

当然还有我们接口(interface)的实现:

@Repository
public class YourRepositoryJdbc implements YourRepository{

   @Autowired
   private NamedParameterJdbcTemplate jdbcTmpl;

   public List<Object> getObjects(){

      StringBuilder sql = new StringBuilder();
      sql.append("SELECT ob.id, ob.name ");
      sql.append("FROM objects ob ");
      sql.append("WHERE ob.del_flag = 0 ");

      List<Object> allObjects = jdbcTmpl.query(sql.toString(), new ResultSetExtractor<List<Object>>(){ 
         @Override
         public List<Object> extractData(ResultSet rs) throws SQLException, DataAccessException {

            while(rs.next()) {
               Object local = new Object();
               local.setId(rs.getIng("id"));
               local.setName(rs.getString("name"));
               allObjects.add(local);
            }
            return allObjects;

         }
    }
}

现在,如果您的 SQL 中有一个名为 OBJECTS 的表,这将起作用。同样,当您转到浏览器并编写 http://localhost:8080/hello/getObjects 时你应该得到一个带有你的对象的JSON对象。

现在您可以从客户端使用 Ajax 请求来调用 REST 服务:

    var getAllObjects = function() {
        var request = $http({
            url: 'http://localhost:8080/hello/getObjects',
            method: 'GET',
            params: {

            }
        });
        return request.then(function (data) {
            return data;
        }, function (error) {
            return error;
        });
    }
    $scope.loadObjects = getAllObjects();

它应该看起来像这样。

关于java - 带有 RESTful Web 应用程序的 JDBC 模板和 AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38727917/

相关文章:

node.js - Protractor 在 Centos 上打开 Chrome 驱动程序超时

java - JDBC 在为 mysql 创建用户时出现问题

java - Swing 堆栈跟踪没有失败的行信息

java - 需要将监听器与Java 2 Micro Edition中的回车按钮关联起来

javascript - 当 URL 中包含 Angularjs 数据时,如何加密我的 URL?

javascript - 我应该在 Angular 中使用数组表示法吗?

java - 在我的 swt 表上获取数据库表结果集

java - 使用java更新mysql中的数据库

java - 将表格模型上的选定项目转换为对象

java - 休息 Web 服务 404 错误 - Tomcat Eclipse