- Mybatis有两种发送SQL的方式
- SqlSession发送SQL
直接看实例
public static void main(String[] args) throws IOException {
SqlSession session=MybatisUtil.getSession();
User user=session.selectOne("mybaits.entity.UserMapper.selectUser",1);
System.out.println("id="+user.getId()+" name="+user.getName()+" password="+user.getPassword());
session.close();
}
- 用Mapper接口发送SQL
SqlSession sqlSession;
UserMapper mapper;
@Before
public void getMapper() throws IOException {
sqlSession=MybatisUtil.getSession();
mapper=sqlSession.getMapper(UserMapper.class);
}
- 对比两种方式:
- 使用mapper接口编程可以消除SqlSession带来的功能性代码,提高可读性,而使用SqlSession发送SQL需要一个SQL id去匹配SQL,使用Mapper更符合完全面对对象语言,更能体现业务的逻辑.
- 例如当使用Mapper时,方法参数是long型变量,Mapper.getUser(1L)IDE会提示错误和校验,而使用sqlSession.selectOne("getUser",1L),只有在运行中才能知道是否会产生错误.
当然如今大多数用的更多是Mapper接口编程,关于第二点可以忽略(我自己觉得,当会碰到这样的问题再说吧)