メソッドの前にアノテーションを使用する方法
インターフェイスをコア構成ファイルにバインドします。
本質:反射を使用する
最下層:動的プロキシ
注釈を使用して、以下を追加、削除、変更、およびチェックします。
トランザクションの自動コミット:
ツール:
public interface UserMapper {
@Select("select * from user")
//获取全部用户
List<User>getUser();
// ---------------------------------------------
//方法存在多个参数,所有的参数前面必须加上@Param("")
@Select("select * from user where id=#{id}")
//获取id获取用户
User getUserById(@Param("id") int id);
// ------------------------------------------------
@Insert("insert into user(id,name,pwd) values(#{id},#{name},#{pwd})")
int addUser(User user);
// ---------------------------------------------------
@Update("update user set name=#{name},pwd=#{pwd} where id=#{id}")
int updateUser(Map<String,Object>map);
//------------------------------------------------------
@Delete("delete from user where id=#{id}")
int deleteUser(@Param("id")int id);
}
public class User {
private int id;
private String name;
private String pwd;
getter setter tostring;
}
テストクラス
@Test
public void getUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> user = mapper.getUser();
for (User user1 : user) {
System.out.println(user1);
}
sqlSession.close();
}
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(2);
System.out.println(userById);
sqlSession.close();
}
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(6,"哈哈哈是的","76543"));
sqlSession.close();
}
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Object> map = new HashMap<>();
map.put("id",2);
map.put("name","2two");
map.put("pwd","lasf");
mapper.updateUser(map);
sqlSession.close();
}
@Test
public void delete(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(2);
sqlSession.close();
}
Mybatisの詳細な実行プロセス:
-
リソースはグローバル構成ファイルを取得します
-
SqlsessionFactoryBuilderをインスタンス化します
-
構成ファイルストリームXMLCondigBuilderを解析します
-
構成すべての構成情報
-
SqlSessionFactoryのインスタンス化
-
トランザクショントランザクション管理
-
エグゼキュータエグゼキュータを作成する
-
SqlSessionを作成します
-
CRUDを実装する
-
実行が成功したかどうかを確認します
-
トランザクションのコミット
-
閉鎖