JDBC 模板和 AngularJS 以及 RESTful 网络应用程序

JDBC Template and AngularJS with RESTful web application

我正在尝试使用来自 MS SQL 数据库的数据填充 HTML table。我已经为 sql 服务器设置了我的 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
   @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;
       }

}

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

现在 YourRepository 应该是这样的:

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

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

@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 的 table,这将起作用。此外,当您转到浏览器并编写 http://localhost:8080/hello/getObjects 时,您应该使用 Objects.

获得一个 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();

它应该看起来像这样。