两张图彻底搞懂MyBatis的Mapper原理

提到看源码,很多同学内心的恐惧的,其实这个从人性的角度来说是非常正常的,因为人们对未知的事物,都是非常恐惧的,其次,你内心可能始终觉得,好像不会原理也还是能工作啊,你的潜意识里没有强烈的欲望.从阅读源码的经历来说,Java三大框架SSM中,Mybatis的源码是最适合入门的.

简单使用

这是一个简单的Mybatis保存对象的例子

<code> 1@Test
2publicvoidtestSave()throwsException{
3//创建sessionFactory对象
4SqlSessionFactorysf=newSqlSessionFactoryBuilder().
5build(Resources.getResourceAsStream("mybatis-config.xml"));
6//获取session对象
7SqlSessionsession=sf.openSession();
8//创建实体对象
9Useruser=newUser();
10user.setUsername("toby");
11user.setPassword("123");
12user.setAge(23);
13//保存数据到数据库中
14session.insert("com.toby.mybatis.domain.UserMapper.add",user);
15//提交事务,这个是必须要的,否则即使sql发了也保存不到数据库中
16session.commit();
17//关闭资源
18session.close();
19}
/<code>
<code>1<mappernamespace>
2
3
4<insertid>
5INSERTINTOUSER(username,password,age)VALUES(#{username},#{password},#{age})
6
7
/<insertid>/<mappernamespace>/<code>

引出主题

但是在实际中,我们都不是这样操作的,我们是通过Mapper接口,调用接口方法,就能实现CRUD操作,那么关键是,这个接口究竟做了什么事,才是我们关心的.

只要把下面这段代码究竟发生了什么事弄明白,就明白,这个Mapper接口究竟做了什么事.

<code>1publicvoidtestGetObject()throwsException{
2SqlSessionsession=MybatisUtil.openSession();
3
4UserMappermapper=session.getMapper(UserMapper.class);
5Useruser=mapper.get(5L);
6
7System.out.println(user);
8session.close();
9}

/<code>
<code>1publicinterfaceUserMapper{
2
3publicvoidadd(Useruser);
4publicUserget(Longid);
5}
/<code>

流程图

但是我认为,一张流程图和时序图就看明白这期间所发生的事

两张图彻底搞懂MyBatis的Mapper原理


两张图彻底搞懂MyBatis的Mapper原理


分享到:


相關文章: