2016-08-02 12 views
2

私は、MS SQLデータベースからのデータをHTMLテーブルに取り込もうとしています。私はSQLサーバーのための私のapp.propertiesを設定し、私の.javaファイルで私のjdbcTemplateを宣言しました。私はAngularJSとjdbcTemplateについて全く新しいです。誰かがサンプルコードを提供したり、正しい方向に私を向けることができますか?JDBCテンプレートとRESTful Webアプリケーションを使用したAngularJS

ありがとうございます!

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 
      } 


     }; 
})(); 

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; 

} 
+0

あなたが置いているものは... JDBC接続を行い、配列にデータを入力します。データベースのスキーマがどのようなものかわからなくても、正確な答えを提供するのは難しいです。 –

+0

@ cricket_007私の.javaを追加しましたが、テンプレートを宣言する以外に何もしていませんでした。 –

+0

私は今見ています。だから、ステップ1 - あなたは実際には、Javaコードでいくつかのデータを取得するSQLクエリを記述する必要があります。 –

答えて

1

HelloResource.java 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(); 
} 

そしてもちろん私たちのインタフェースの実装:あなたはSQLでOBJECTSをという名前のテーブルを持っている場合

@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; 

     } 
    } 
} 

さて、これは動作します。また、ブラウザにアクセスしてhttp://localhost:8080/hello/getObjectsと書くと、オブジェクトでJSONオブジェクトを取得する必要があります。それは次のようになります

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(); 

:あなたはRESTサービスを呼び出すためのAjaxリクエストを使用することができ、クライアントから今

関連する問題