簡単さこそ美しい!SpringBoot+JPA
SpringBootは急速にプロジェクトを構築して、本当に使ってやっと知って、JPAを組み合わせて持続的な層として、最後まで簡単にします!以下にプロジェクトの構築を記録し、その後NOSQL redis、検索エンジンelasticSearchなどを追加し、時代遅れではないものを追加します.
開発ツールidea、プロジェクト構築gradle、テンプレートエンジンthymeleaf
プロジェクト構築
1.【new】->「product」->「Spring Initializrの選択」->「next」
2.Group,Artifact,Type->【next】を記入する
3.ガイドパック 1.左はWebを選択右はWeb 2をチェックする.左選択SQL右チェックJPA 3.左はSQLを選択右はmysql 4をチェックします.左はTemplate Engines、右はThymeleaf 5を選択します.【next】->【finish】
現在のプロジェクト構造は
Bootjpa Applicationはプロジェクトの起動クラスresources/templates/フォルダはページを置くbuildです.gradle jarパケット座標の格納
application.properties
@RestController
構成が完了したらコントロールを書いてみてください
Bootjpaアプリケーションファイルで起動
@RestController注記@Controller+@ResponseBodyの代わりにページに戻ってそのまま@Controllerを使えば良い
現在JPAに登場
db
注記はhibernateと同じです.
今、奇跡を目撃する時だ!
dao
dao層はJpaRepositoryを継承すればよい
なんだ!これで終わり??はい、控えめです.
controller
コントロールレイヤ、サービスレイヤがスキップされます.
thymeleaf
ページについては、デフォルトはresources/templates/のhtmlで、解析器がデフォルト構成を構成していることを試みます.
では、resources/templates/の下に
起動して、住所を入力して、車に戻ります!
application.properties
アプリケーションをpropertiesに構成されたデータをクラスに注入するには、次のアプリケーションを実行します.propertiesのデータ;
クラスで@Value注入を使用し、${}ラップを使用することを忘れないでください.
すばらしい回顧
さっきdaoレイヤは1つのインタフェースしか書いていないのに、どうしてsave()を呼び出すことができて、findAll()を呼び出すことができて、JPAに対して多くの基礎の添削の方法をデフォルトして、直接呼び出すことができます.デフォルトで与えられた方法以外はどう書きますか?
呼び出すとそのまま
では、どのようにマッピングしたのか、それはどのように私のパラメータnameが表のnameに対応していることを知っていて、元の名前のようにマッピングすることができて、道理があるようで間違いなくそんなに簡単で、このような書き方はhibernateすぎます.
注意事項ブラウザアクセスコントローラが見つかった場合404https://segmentfault.com/n/13... Srpingboot打war包https://segmentfault.com/n/13...
開発ツールidea、プロジェクト構築gradle、テンプレートエンジンthymeleaf
プロジェクト構築
1.【new】->「product」->「Spring Initializrの選択」->「next」
2.Group,Artifact,Type->【next】を記入する
3.ガイドパック
現在のプロジェクト構造は
Bootjpa Applicationはプロジェクトの起動クラスresources/templates/フォルダはページを置くbuildです.gradle jarパケット座標の格納
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
@RestController
構成が完了したらコントロールを書いてみてください
@RestController
public class HelloBootController {
@RequestMapping("helloBoot")
public String helloBoot(){
return "Hello Boot-JPA";
}
}
Bootjpaアプリケーションファイルで起動
@RestController注記@Controller+@ResponseBodyの代わりにページに戻ってそのまま@Controllerを使えば良い
現在JPAに登場
db
注記はhibernateと同じです.
@Entity
public class User {
private long id;
private String name;
private String passWord;
private String email;
@Id
@GeneratedValue
public long getId() {
return id;
}
。。。。。
}
今、奇跡を目撃する時だ!
dao
dao層はJpaRepositoryを継承すればよい
public interface UserRepository extends JpaRepository {
}
なんだ!これで終わり??はい、控えめです.
controller
コントロールレイヤ、サービスレイヤがスキップされます.
@Controller
public class HelloBootController {
@Autowired
UserRepository userRepository;
@RequestMapping("/toHello")
public String toHello(ModelMap modelMap){
userRepository.save(new User("Mshu","123456","[email protected]"));
List users = userRepository.findAll();
modelMap.put("users",users);
return "helloBoot"; //
}
}
thymeleaf
ページについては、デフォルトはresources/templates/のhtmlで、解析器がデフォルト構成を構成していることを試みます.
:resources/templates/
:html
では、resources/templates/の下に
helloBoot.html
というページを新規作成し、thymeleafを導入してthymeleaf構文を使用したことに注意します.
Title
起動して、住所を入力して、車に戻ります!
application.properties
アプリケーションをpropertiesに構成されたデータをクラスに注入するには、次のアプリケーションを実行します.propertiesのデータ;
#elasticsearch
cluster.name=elasticsearch
elasticsearch.ip=127.0.0.1
elasticsearch.port=9300
クラスで@Value注入を使用し、${}ラップを使用することを忘れないでください.
@Component
public class ELClient {
@Value("${cluster.name}")
private String clusterName;
@Value("${elasticsearch.ip}")
private String elacticSearchIp;
@Value("${elasticsearch.port}")
private Integer elacticSearchPort;
}
すばらしい回顧
さっきdaoレイヤは1つのインタフェースしか書いていないのに、どうしてsave()を呼び出すことができて、findAll()を呼び出すことができて、JPAに対して多くの基礎の添削の方法をデフォルトして、直接呼び出すことができます.デフォルトで与えられた方法以外はどう書きますか?
public interface UserRepository extends JpaRepository {
User findByName(String name);
}
呼び出すとそのまま
User user = userRepository.findByName("Mshu");
では、どのようにマッピングしたのか、それはどのように私のパラメータnameが表のnameに対応していることを知っていて、元の名前のようにマッピングすることができて、道理があるようで間違いなくそんなに簡単で、このような書き方はhibernateすぎます.
注意事項