Spring 11

HSQLDBのデータが表示されません。

・新しいプロジェクト作成(H2と接続)

application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:tcp://localhost/c:/workspace/JDBC/demo
spring.datasource.username=username
spring.datasource.password=password

pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>

@Service
このクラスをサービスとして登録するためのアノテーションです。


AjaxでMyDataを取り出し、表示させます。

ページロード時にAjax通信します。
$(document).ready(function(){
var num = /*[[${param.id[0]}]]*/;
$.get("/rest/" + num, null, callback);
});

Ajax通信後の処理
function callback(result){
$('#obj').append('<li>id: ' + result.id + '</li>');
$('#obj').append('<li>name: ' + result.name + '</li>');
$('#obj').append('<li>mail: ' + result.mail + '</li>');
$('#obj').append('<li>age: ' + result.age + '</li>');
$('#obj').append('<li>memo: ' + result.memo + '</li>');
}

XMLでデータを取得します。
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>


MyData.java
import javax.xml.bind.annotation.XmlRootElement:
@XmlRootElement

 

ApplicationArguments
アプリケーションが実行された時に渡された引数を管理します。

getNonOptionArgs
アプリケーション実行時の引数をListとして取り出せます。


・Beanクラスを作成して、Beanを登録して利用します。
public class MyDataBean {

@Autowired
MyDataRepository repository;

public String getTableTagById(Long id){
Optional<MyData> opt = repository.findById(id);
MyData data = opt.get();
String result = "<tr><td>" + data.getName()
+ "</td><td>" + data.getMail() +
"</td><td>" + data.getAge() +
"</td><td>" + data.getMemo() +
"</td></tr>";
return result;
}

}

MyBootAppConfig.java
@Configuration
public class MyBootAppConfig {

@Bean
MyDataBean myDataBean(){
return new MyDataBean();
}
}


IDによって表示します。
@Autowired
MyDataBean myDataBean;

@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ModelAndView indexById(@PathVariable long id,
ModelAndView mav) {
mav.setViewName("pickup");
mav.addObject("title","Pickup Page");
String table = "<table>"
+ myDataBean.getTableTagById(id)
+ "</table>";
mav.addObject("msg","pickup data id = " + id);
mav.addObject("data",table);
return mav;
}

・ページネーション
データの一部分だけを取り出して、表示します。

Repository
public Page<MyData> findAll(Pageable pageable);

Controller
@RequestMapping(value = "/page", method = RequestMethod.GET)
public ModelAndView index(ModelAndView mav, Pageable pageable) {
mav.setViewName("index");
mav.addObject("title","Find Page");
mav.addObject("msg","MyDataのサンプルです。");
Page<MyData> list = repository.findAll(pageable); //●
mav.addObject("datalist", list);
return mav;
}

表示する方:localhost:8080/page?size=2&page=0

 

・Thymeleafの独自タグを作成しました。

AttributeTagProcessorクラスを使います。

ITemplateContext
テンプレートのコンテキストを扱います。
IProcessableElementTag
エレメントタグを扱うクラスです。
AttributeName
属性名を扱うクラスです。
IElementTagStructureHandler
エレメントの構造をハンドリングします。