注解开发的简单使用
- 我们在我们的接口中添加注解
public interface UserMapper {
@Select("select * from user")
List<User> getUsers();
}
- 在核心配置文件中注入
<mappers>
<mapper class="com.byx.dao.UserMapper"/>
</mappers>
- 测试
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();
}
可正确输出用户。
- 本质:反射机制实现
- 底层:动态代理
Mybatis详细的执行流程
- 执行流程:
- 备注:更加详细的Mybatis源码解析,看博客:https://www.cnblogs.com/javazhiyin/p/12340498.html
使用注解完成CRUD
- 在工具类创建时实现自动提交事务
public static SqlSession getSqlSession(){
SqlSession sqlSession = sqlSessionFactory.openSession(true);
return sqlSession;
}
- 表写接口,添加注解
@Select("select * from user where id = #{id}")
User getUserById(@Param("id") int id);
- 测试
@Test
public void test2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
- 关于@Param
@Param注解用于给方法参数起一个名字。以下是总结的使用原则:
- 在方法只接受一个参数的情况下,可以不使用@Param。
- 在方法接受多个参数的情况下,建议一定要使用@Param注解给参数命名。
- 如果参数是 JavaBean , 则不能使用@Param。
- 不使用@Param注解时,参数只能有一个,并且是Javabean。