人生は、それは私がうまく他のすべての操作を行い、あなたの希望に加えて、生きるために吸う、非常に遅かったです。
使用注釈開発
図1に示すように、指向プログラミング・インターフェース
根本的な原因指向プログラミング・インターフェース:デカップリング、スケーラビリティ、増加の再利用、層状の開発、上側の具体的な実装が管理していない、我々は共通の基準を遵守しなければならない、より簡単に開発を行うこと、規範良いです
アノテーションを使用して開発された2、
インターフェイス上で実装ノート
@Select(value = "select * from user") List<User> getUsers();
コア構成ファイルへのインターフェースをバインド
<!--绑定接口--> <mappers> <mapper class="rui.dao.UserMapper"/> </mappers>
テスト
public class UserMapperTest { @Test public void test(){ SqlSession sqlSession = MyBatisUtils.getSqlSession(); //底层主要应用反射 UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> users = mapper.getUsers(); for (User user : users) { System.out.println(user); } sqlSession.close(); } }
エッセンス:達成するために、反射機構
下:動的プロキシ
3、CRUD
私たちは、自動的に作成ツールの時にトランザクションをコミットすることができます
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
書き込みインタフェースは、コメントを育てます
public interface UserMapper {
@Select(value = "select * from user")
List<User> getUsers();
//方法存在多个参数,所有的参数前面必须加上@Param注解
@Select("select * from user where id = #{id} or name = #{name}")
User getUserByID(@Param("id")int id,@Param("name")String name);
@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);
}
テストカテゴリ
[注:私たちは、インターフェイスが、当社のコアプロファイルに登録したい必要があります]
@Paramについて()のコメント
- 私たちが追加する必要がString型または種類の基本的な引数、
- 参照型は、追加する必要はありません
- 基本的なタイプの一つだけを無視することができますが、それはすべて一緒に推奨されている場合
- SQLで参照我々は@Paramここで属性名のセット()であります
$#{} {}差
{}は、プリコンパイラのプロセスであり、置換文字列は} {$です
- {#}が処理時間をMyBatisの、セット割り当て方法のPreparedStatement ;?を呼び出すための番号で} {SQL#であろう処理MyBatisの
${}
時間を、それがすることにある${}
変数の値を置き換えます - 使用#{}は効果的にシステムのセキュリティを向上させる、SQLインジェクションを防止することができます