注解开发,不需要在写UserMapper.xml,只需要用注解在方法上实现即可。
mybatis注解开发流程:
1.在接口中写方法;
2.在方法上面加入注解(SQL语句)
3.在mybtis-config中,注册mapper到class=“com.wang.mapper.UserMapper”
4.编写测试类
public interface UserMapper {
@Select("select * from mybatis.user")
List<user> getUserList();
@Select("select *from user where 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}")
void updateUser(user user);
@Delete("delete from user where id=#{uid}")
void deleteUser(@Param("uid")int id);
}
<mappers>
<mapper class="com.wang.mapper.UserMapper"/>
</mappers>
public class UserMapperTest {
@Test
public void getUserList(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<user> userList = mapper.getUserList();
for(user user:userList){
System.out.println(user);
}
}
@Test
public void getUserById(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
user user=mapper.getUserById(1);
System.out.println(user);
}
@Test
public void addUser(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
int hello =mapper.addUser(new user(10,"abc","66666"));
System.out.println(hello);
}
@Test
public void updateUser(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new user(2,"z334","0011123"));
sqlSession.commit();
sqlSession.close();
}
@Test
public void deleteUser(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserMapper mapper= sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(10);
sqlSession.commit();
sqlSession.close();
}
}
注解的本质是反射;
底层是动态代理;
注意点:使用注解开发时,事务设置为自动提交。在工具类中设置为true
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}