その後、最後の記事では、最後の記事ではその実行方法を記述し、すべての文に対するクエリのみを記述したと述べています。
この記事では、追加、削除、変更、および注釈を作成して、追加、削除、変更、およびマッパーを実現します。
前のリンク:mybatisの開始
追加、削除、変更を行う
デフォルトでは、mybatisを実行します。追加、削除、変更、およびチェックを実現するにはUserMapper
、UserMapper.xml
途中でインターフェイスを追加し、途中でタグとSQLステートメントを記述して、テスト用のテストクラスにテストメソッドを追加するだけです。
練習して、最初にインターフェース
UserMapper.xml
を作成し、コンテンツを自分で作成することもできます。
1. UserMapperクラス:
public interface UserMapper {
// 查询所有用户
List<User> findAll();
//根据id查询用户
User getUserById(int id);
//插入用户
int addUser(User user);
//更新用户
int updateUser(User user);
//删除用户
int deleteUser(int id);
}
2、UserMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lu.mapper.UserMapper">
<!--查询所有用户,resulType后要写全,只有命名别名之后才可不写全-->
<select id="findAll" resultType="com.lu.pojo.User">
select * from user
</select>
<select id="getUserById" parameterType="int" resultType="com.lu.pojo.User">
select * from user where id = #{id}
</select>
<insert id="addUser" parameterType="com.lu.pojo.User" >
insert into user (id,username, pwd) values(#{id},#{username}, #{pwd})
</insert>
<update id="updateUser" parameterType="com.lu.pojo.User">
update user set username = #{username}, pwd=#{pwd} where id=#{id}
</update>
<insert id="deleteUser" parameterType="int">
delete from user where id = #{id}
</insert>
</mapper>
3.テストメソッドを記述する
テストクラスでは、juintの依存関係がインポートされるため、@ Testで注釈を付けることができます。
@Testアノテーションの下のメソッドでは、左側の緑色のメソッドをクリックして、このメソッドのみを実行できます。
@Test
public void getUserByIdTest(){
//创建sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//使用SqlSession创建UserMapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//根据id查询,输入数字
User getuser = userMapper.getUserById(2);
System.out.println(getuser);
//关闭sqlSession
sqlSession.close();
}
注釈を使用して追加、削除、変更を実装する
アノテーションを使用すると、より簡潔になります。
書くUserMapper.xml
に書き込まれるSQL文UserMapper
のインタフェース注釈を介して直接に、そしてあなたが直接対応するXMLを削除することができます。
変更するもう1つの場所は、コア構成ファイルにSQLマッピングステートメントを追加することです。
UserMapperインターフェースに注釈を追加した後のコード
public interface UserMapper {
// 查询所有用户
@Select("select * from user")
List<User> findAll();
//根据id查询用户
@Select("select * from user where id = #{id}")
User getUserById(int id);
//插入用户
@Insert("insert into user (id, username, pwd ) values(#{id}, #{username}, #{pwd} )")
int addUser(User user);
//更新用户
@Update("update user set username=#{username}, pwd=#{pwd} where id = #{id}")
int updateUser(User user);
//删除用户
@Delete("delete from user where id = #{id}")
int deleteUser(int id);
}
コア構成ファイルにマッピングを追加する
コード:
<mappers>
<mapper class="com.lu.mapper.UserMapper"/>
</mappers>
以下に示すように場所を追加します
XMLマッパー
MyBatisの本当の力は、その魔法である文のマッピングにあります。その並外れた力のために、マッパーのXMLファイルは比較的単純です。
SQLマッピングファイルには、最上位の要素がいくつかあります(定義する順序でリストされて
cache
います)。–名前空間のキャッシュ構成。
cache-ref
–他のネームスペースのキャッシュ設定を参照してください。
resultMap
–最も複雑で強力な要素であるデータベース結果セットからオブジェクトをロードする方法を説明します。
sql
–他のステートメントから参照できる再利用可能なステートメントブロック。
insert
–挿入ステートメントをマップします。
update
–マッピング更新ステートメント。
delete
–削除ステートメントのマッピング。
select
–クエリステートメントをマッピングします。
要素の属性を選択
の属性 | 解説 |
---|---|
id |
名前空間内の一意の識別子を使用して、このステートメントを引用できます。 |
parameterType |
このステートメントに渡されるパラメーターの完全修飾クラス名またはエイリアス |
resultType |
このステートメントから返されることが予想されるクラスの完全修飾名またはエイリアス。戻り値がコレクションの場合、コレクション自体のタイプではなく、コレクションに含まれるタイプに設定する必要があることに注意してください。同時に使用できるのは、resultTypeとresultMapのどちらか1つだけです。 |
resultMap |
外部resultMapへの名前付き参照。結果のマッピングはMyBatisの最も強力な機能です。それを完全に理解すれば、多くの複雑なマッピングの問題を簡単に解決できます。同時に使用できるのは、resultTypeとresultMapのどちらか1つだけです。 |
マッパーについて話す
以下は公式ドキュメントからの
抜粋です:SQLマッピングステートメントを定義します。まず、MyBatisにこれらの文の場所を伝える必要があります。リソースを自動的に見つけるという点では、Javaは適切な解決策を提供しないため、マッピングファイルの場所をMyBatisに直接指示するのが最善の方法です。クラスパスに相対するリソース参照、完全修飾リソースロケーター(file:///形式のURLを含む)、またはクラス名とパッケージ名を使用できます。例えば:
<!-- 使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="org.mybatis.builder.AuthorMapper"/>
<mapper class="org.mybatis.builder.BlogMapper"/>
<mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
これらの構成はMyBatisにマッピングファイルの場所を通知し、残りの詳細は各SQLマッピングファイルである必要があります。
公式文書は4種類ありますが、ここではよく使われるものを2つ紹介します。