0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Domaを書く時に用意する最低限3ファイルの具体例

Posted at

Domaでデータアクセスするのに必要なのは以下の3ファイル

  1. エンティティ
  2. Daoインターフェース
  3. SQLテンプレート

##1. エンティティ(User.java)
データベースのデータ本体を表すクラス

User.java
@Table(name = "users")
@Entity 
@Getter
@Setter
public class User extends DomaDtoImopl{
 private static final long serialVersionUID = 123456789123456L
   
   @OriginalStates
   User originalstates;

   @Id
   @Column(name ="user_id")
   @GenerateValue(strategy = GenerationType.IDENTITY)
   Long id;
   String password;
   String firstName;
   String lastName;
}

####メモ
@￰OriginalStatesの役割
→更新したいカラムだけ更新する
そもそも、Domaを使用したUPDAT文は以下の操作でレコードを更新する。

①updateしたいレコードをselect(自動生成)でEntityクラスに全カラム取る (レコード数は1件)
②①で取得したEntityクラスの中でupdateしたいカラムのみ変更する
③変更後のEntityクラスをupdateの引数にわたして実行

この時、更新されていない項目もSETの項目には入っていて、同じ値で上書きすることになる。
しかし、@￰OriginalStatesの記述を最初のところに書いておけば、差分だけ更新してくれる。つまり、同じ値だからわざわざ更新する必要のない項目をSETの中には含めない。

##2. Daoインターフェース(UserDao.java)

UserDao.java
@ConfigureAutowireable
@Dao
public interface UserDao {
    //ユーザーを一件取得する
    @Select
    Optional<User> selectById(Long Id); 

    //ユーザーを登録する
    @Insert
    int insert(User user);

    //ユーザーを更新する
    @Update
    int update(User user);

}

3. SQLテンプレート(select.sql)

select.sql
SELECT
 id
,password
,firstName
,lastName
FROM
 users

メモ ~ファイルの置き場所とファイル名~

src/main/resources/META-INF」の配下にDaoインターフェースと同じパッケージ構成になるように配置
ファイル名はDaoインターフェースに定義したメソッド名として、拡張子は.sqlとする

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?