ディレクトリ
アノテーションを使用してCRUD操作を実装する
このメソッドは本質的にリフレクションメカニズムによってサポートされており、最下層は動的プロキシを実装しています
簡単に言えば、たった2つのステップです。最初のステップは、CRUDアノテーションとSQLをDaoインターフェースに追加することです。2番目のステップは、インターフェース登録をコア構成ファイルにバインドすることです。
public interface UserMapper {
@Select("select * from user")
List<User> getUsers();
// 方法存在多个参数,所有的参数前面必须加上 @Param("id")注解
@Select("select * from user where id = #{id}")
User getUserByID(@Param("id") int id);
@Insert("insert into user(id,name,pwd) values (#{id},#{name},#{password})")
int addUser(User user);
@Update("update user set name=#{name},pwd=#{password} where id = #{id}")
int updateUser(User user);
@Delete("delete from user where id = #{uid}")
int deleteUser(@Param("uid") int id);
}
<mappers>
<mapper class="com.lt.dao.UserDao"/>
</mappers>
呼び出すときは、通常どおり呼び出しメソッドを記述します。主な機能は、mapper.xmlファイルを省略します。
@Test
public void test(){
//获得SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> userList = userDao.getUserList();
for (User user : userList) {
System.out.println(user);
}
logger.info("查询成功啦~");
//关闭SqlSession
sqlSession.close();
}
@Param()アノテーション
@Param()アノテーションは、エンティティの属性とテーブルのフィールドをマップするために使用されます。使用する場合は、次の注意事項があります
-
基本型パラメーターまたは文字列型、追加する必要があります
-
他の参照タイプを追加する必要はありません
-
基本タイプが1つしかない場合は無視できますが、誰でも追加することをお勧めします。
-
SQLで引用するのは、ここで@Param()に設定された属性名です!
アノテーションを使用してCRUD操作を作成するデメリット
CRUDの注釈を使用した単純なSQLステートメントにより、コードがより簡潔になり、プロジェクト構造がより明確になります。ただし、複雑なSQLステートメントの場合、注釈を使用すると混乱する可能性があります。
比較#{} $ {}違い
#{} SQLインジェクションは防止できますが、$ {}は防止できません