前の記事で簡単なスプリングブートアプリケーションを作成し、データベースを操作するためにSpring-Data-JPAの使用を導入します。
データベースがSpringbootと呼ばれる新しいMySQLデータベースを作成し、操作の例のテーブルオブジェクトとしてuser_infoデータテーブルを作成します。
user_info情報は次のとおりです。
テーブルをドロップする場合は `user_info`;作成テーブル「user_info`(` user_info」( `user_info」(11)not null auto_increment、` username` varchar(255)デフォルトnull、 `password` varchar(255)デフォルトnull、プライマリキー(` id`))engine = myisam auto_increment = 3 default = 3 charset = utf8; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- user_info-- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
データベースとテーブルが正常に作成されたら、プロジェクトに戻ります
ステップ0:まず、MySQLとJPAのMaven依存関係パッケージを紹介します。
<Dependency> GroupId> mysql </groupid> <artifactid> mysql-connector-java </artifactid> </dependency> <dependency> org.springframework.boot </groupid> <artifactid> spring-boot-starter-data-jpa </artifactid> </depency>
最初のステップは、YML構成ファイルでデータベース接続情報を構成することです。
春:DataSource:DataSource:Driver-Class-Namame:com.mysql.jdbc.Driver URL:jdbc:mysql:// localhost:3306/springboot?useunicode = true&CharatereCoding = utf-8&usessl = false username:root passward:1011 JPA:show-sql:true-spr
2番目のステップは、データテーブルエンティティマップに対応するエンティティクラスを作成することです。
パッケージcom.javazhiyin;インポートjavax.persistence.entity; import javax.persistence.generatedValue; import javax.persistence.generationType; Import javax.persistence.id;/*** 57783が2018/7/7/4.*//entitypublic class usepublic class userinfo(@idgenerfo( GenerationType.identity)プライベート整数ID;プライベート文字列ユーザー名;プライベート文字列パスワード。 public Integer getId(){return id; } public void setid(integer id){this.id = id; } public string getUsername(){return username; } public void setUsername(string username){this.username = username; } public string getPassWord(){パスワードを返します。 } public void setPassword(string password){this.password = password; } public userinfo(){}}3番目のステップは、リポジトリクラスを作成し、jParePositoryクラスを継承することです。
パッケージcom.javazhiyin; Import org.springframework.data.jpa.repository.jparepository;/***は57783が2018/7/4。*/public interface usersforeinforepositors extents jparepository <usersirfo、integer> {}を拡張しますここでは、データベース操作の基本的な方法をカプセル化するJParePositoryクラスを継承します。ソースコードを介してjparepositoryで利用可能な方法を確認しましょう。
//// Intellij Ideaによって.classファイルから再作成されたソースコードvar1); <s extends t> iterable <s> saveall(iterable <s> var1);オプション<t> findbyid(id var1); Boolean ExistsByid(ID var1); iterable <t> findall(); iterable <t> findallbyid(iterable <id> var1); long count(); void deletebyid(id var1); void delete(t var1); void deleteall(iterable <?extends t> var1); void deleteall();}
ステップ4:データベースの追加、削除、変更、チェックの操作を実装する新しいコントローラーを作成します。
パッケージcom.javazhiyin; Import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation。*; import java.util.list; userforepository userforepository; /*** check* @return*/@getMapping(value = "/list")public list <userinfo> getUserList(){return usersforepository.findall(); }/** * add * @param username * @param password * @return */@postmapping(value = "/adduser")public userinfo adduser(@requestparam( "username")string username、 @requestparam( "password")string password){userininfo user = new userinfo(); user.setusername(username); user.setPassWord(パスワード); return inforepository.save(user); }/** *変更 * @param id * @param username * @param password * @return */@putmapping(value = "upduser/{id}")public userinfo upduser( @pathvariable( "id")integer id、 @requestparam( "username")string " userinfo(); user.setId(id); user.setusername(username); user.setPassWord(パスワード); return inforepository.save(user); }/*** delete* @param id*/@deletemapping(value = "deluser/{id}")public void deluser( @pathvariable( "id")integer id){userInfo user = new userInfo(); user.setId(id); userinforepository.delete(user); }}上記のコードをテストするために、Postmanを使用してテストします。これは非常に便利です。
クエリテスト:
新しいテスト:
テストを変更します:
テストを削除します:
すべてのテストに合格できることがわかります。 Springbootは、Spring-Data-JPAを使用して、操作を追加、削除、変更、およびチェックすることは非常に便利です。
いくつかの質問:
1. Object EntityマッピングクラスのAnnotation @generatedValueの概念と使用法は何ですか?
JPAでは、各エンティティエンティティが1つの主キーのみを持つ必要があり、@generatedValueアノテーションがエンティティに対して一意に識別された主キーを生成することを要求します。
JPAは、列挙クラスの生成タイプで定義されている4つの主要な主要生成戦略を提供します。
GenerationTable
特定のデータベーステーブルを使用してプライマリキーを保存すると、Persistenceエンジンがリレーショナルデータベースの特定のテーブルを介してプライマリキーを生成します。この戦略の利点は、外部環境とデータベースの特定の実装に依存せず、異なるデータベース間で簡単に移植できることです。ただし、データベースの特性を完全に活用することはできないため、最初に使用しません。
GenerationType.Sequence
主要な自己成長は、Oracleなどの一部のデータベースではサポートされていません。 「シーケンス」と呼ばれるメカニズムを提供して、一次キーを生成します。現時点では、GenerationType.Sequenceを主要なキー生成ポリシーとして使用できます。この戦略の欠点は、テーブルの反対です。一部のデータベース(Oracle、PostgreSQL、DB2)のみがシーケンスオブジェクトをサポートするため、この戦略は一般に他のデータベースには適用されません。
GenerationType.identity
主要な自己成長戦略。データベースがデータを挿入すると、プライマリキーに値を自動的に割り当てます。たとえば、MySQLは、テーブルを作成するときに「Auto_increment」を宣言して、主要なキーの成長を指定することができます。このポリシーは、ほとんどのデータベースでサポートされています(指定されたメソッドまたはキーワードは異なる場合があります)が、サポートしていないデータベースはまだいくつかあるため、ポータブルはわずかに少ないです。
GenerationType.auto
主要なキー生成戦略を永続エンジンに任せます。 Persistence Engineは、データベースに基づいた上記の3つの主要なキー生成戦略のいずれかを選択します。この主要なキー生成戦略は、より一般的に使用されています。 JPAのデフォルト生成戦略はGenerationType.autoであるため、この戦略または@generatedValueを直接使用する場合、@generatedValue(Strategy = GenerationType.auto)を明示的に指定できます。
2. Spring Data JPAはどのようなインターフェイスを提供し、どのような関数を実装できますか?
この記事で実行できるソースコード:https://github.com/javazhiyin/springboot/tree/master/bootdemo_01
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。