注解增删改查
测试时实现自动提交,改造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();
}
}