注解增删改查
測試時實作自動送出,改造MyBatisUtils工具類的getSession()方法
注意點:@Param
@Param注解用于給方法參數起一個名字。以下是總結的使用原則:
- 在方法隻接受一個參數的情況下,可以不使用@Param。
- 在方法接受多個參數的情況下,建議一定要使用@Param注解給參數命名。
- 如果參數是 JavaBean , 則不能使用@Param。
- 不使用@Param注解時,參數隻能有一個,并且是Javabean。
MyBatisUtils.java
//我們可以從中獲得 SqlSession 的執行個體。SqlSession 提供了在資料庫執行 SQL 指令所需的所有方法。
// 你可以通過 SqlSession 執行個體來直接執行已映射的 SQL 語句
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession(true);
}
關于openSession()方法的源碼
public void startManagedSession(boolean autoCommit) {
this.localSqlSession.set(openSession(autoCommit));
}
1.增删改查的Mapper接口
public interface UserMapper {
//查詢全部使用者
@Select("select * from user")
List<User> getAllUser();
//根據id查詢使用者
@Select("select * from user where id = #{id} and name = #{name}")
List<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);
//删除使用者
@Delete("delete from user where id = #{id}")
int deleteUser(@Param("id") int id);
//更新使用者資訊
@Update("update user set pwd = #{password} where id = #{id}")
int updateUser(@Param("id") int id,@Param("password") String password);
}
2.增删改查的test方法
public class UserMapperTest {
//注解開發test
@Test
public void testGetUserByID() {
SqlSession session = MyBatisUtils.getSqlSession();
//本質上使用了jvm的動态代理模式
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.getUserByID(1,"小王");
for (User user : users) {
System.out.println(user);
}
}
//新增使用者test
@Test
public void testAddUser() {
SqlSession session = MyBatisUtils.getSqlSession();
UserMapper mapper = session.getMapper(UserMapper.class);;
User users = new User(4,"緊急","4234323443");
mapper.addUser(users);
session.close();
}
//删除使用者test
@Test
public void testDeleteUser() {
SqlSession session = MyBatisUtils.getSqlSession();
UserMapper mapper = session.getMapper(UserMapper.class);;
mapper.deleteUser(5);
session.close();
}
//update使用者資訊
@Test
public void testUpdateUser() {
SqlSession session = MyBatisUtils.getSqlSession();
UserMapper mapper = session.getMapper(UserMapper.class);;
mapper.updateUser(4,"3423888");
session.close();
}
}